В документации laravel 4 упоминается уникальная проверка поля. Они объясняют здесь, как включать в себя предложения о уникальной проверке. Отдельное предложение WHERE для уникальной таблицы, например:
$validator = Validator::make( array( 'name' => 'John Doe' ), array( 'name' => 'unique:table,field,NULL,id,field1,value1' ) );
Теперь я предполагаю, что это что-то вроде:
"SELECT id FROM table WHERE field = 'John Doe' AND field1 = value1 LIMIT 1"
Затем проверьте, возвращает ли этот запрос результат, и если он не прошел проверку.
Поэтому мне было интересно, есть ли способ добавить дополнительные предложения? И если да, то как?
Окончание моего первоначального вопроса:
Могу ли я просто складывать их или как мне писать свою проверку, если нет? Так что я могу просто добавить «, field2, value2, field3, value3» ect. и складывать их вот так?
Ответ
Да, я могу просто складывать их, как показано ниже. Поэтому, если я хотел бы добавить несколько предложений where к моему уникальному валидатору, я бы сделал это следующим образом:
'name' => 'unique:table,field,NULL,id,field1,value1,field2,value2,field3,value3'
Исключения
Третий параметр, указанный в уникальном правиле, является параметром except, согласно документации Laravel .
unique:table,column,except,idColumn
Я оставил этот параметр NULL, потому что это не относится к исходному вопросу. Для тех, кто хотел бы знать, что функция этого NULL находится в пределах уникального правила, позвольте мне уточнить:
Параметр except заставляет уникальное правило игнорировать данный идентификатор. Поэтому указание его как NULL приведет к проверке на каждую запись (т.е. игнорирование ничего).
Например: предположим, что мы хотим, чтобы наш электронный адрес пользователя был уникальным, но наш администратор также может иметь обычную учетную запись пользователя с тем же адресом электронной почты. Предполагая, что наш администратор – первый пользователь, которого мы создали, имеет идентификатор 1. Так что мы можем сделать при создании новых пользователей:
'name' => 'unique:users,email,1,id'