laravel 4: проверка уникальности (базы данных) несколько, где пункты

В документации 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'