2015-06-11 12 views
5

Ho un modello utente che deve avere indirizzi email univoci ma voglio anche permettere che siano lasciati vuoti nel caso in cui l'utente non abbia e-mail ... Vedo in docs c'è un modo per fare una regola per univoco e un'eccezione per un id ... ma non sono sicuro di come rendere questo permesso nullo o vuoto ma unico se non lo è. Scusa sembra come se fosse semplice ma non riesco a pensare alla risposta.laravel come fare una regola univoca escluso vuoto o nullo

public static $adminrules = 
     'email' => 'email|unique:users,email,null,id,email,NOT_EMPTY'        
    ); 

Modifica Può essere che utilizzando la regola senza required è sufficiente dal momento che un vuoto o nulla avrebbero superato la convalida in quei casi. Potrei avere un bug correlato che lo rende così non posso aggiungere più di 1 email vuota, quindi non posso verificarlo.

public static $adminrules = 
     'email' => 'email|unique:users'        
    ); 
+1

è questo dove la regola "a volte" sarebbe utile? – Phil

risposta

0

si dovrebbe provare questo:

$v->sometimes('email', 'email|unique:users,email', function($input) 
{ 
    return !empty($input->email); 
}); 

$ v è l'oggetto validatore e che, fondamentalmente, dice che nel caso in cui il campo e-mail non è vuota si deve anche essere unico (non ci dovrebbe essere un record della tabella utenti con questo valore nella colonna email).

Problemi correlati