2015-03-12 5 views
0

Я не могу найти исчерпывающее руководство по проверке уникальных полей в Laravel. Просьба уточнить, какая разница может быть между следующими правилами валидации, а какая - неправильной или избыточной.Как написать подтверждение Laravel для уникальных полей

$rules = ['email' => 'email|unique:users'] 
$rules = ['email' => 'email|unique:users,email'] 
$rules = ['email' => "email|unique:users,email,{$user->email}"] 
$rules = ['email' => "email|unique:users,email,{$user->email},email"] 
+1

Примечание. Ваш третий и четвертый примеры не будут работать, поскольку '$ user-> email' не будет обрабатываться в одной кавычной строке. '$ rules = ['email' =>« email | unique: users, email, {$ user-> email}, email "]' будет работать. – ceejayoz

+1

Исправлено. Спасибо за напоминание! – TechyTimo

ответ

3

Первое о ne просто ищет в таблице пользователей, чтобы убедиться, что письмо уникально. Поскольку вы не указали столбец в качестве второго аргумента, предполагается, что имя столбца будет таким же, как и ключ, в данном случае email.

Второй, просто объявляющий, какой столбец должен быть проверен для столбца электронной почты. В этом случае это не требуется, потому что столбец электронной почты email, который уже предполагает Laravel. Если ваш столбец электронной почты в базе данных был назван как-то вроде user_email, то вам нужно будет пройти в user_email в валидатор, чтобы он знал, какой столбец проверяет адрес электронной почты.

Третий, вы должны передать идентификатор пользователя с этим электронным письмом. Это сообщит Laravel, что письмо должно быть уникальным, если только это письмо не будет установлено для этого идентификатора. Это полезно для форм редактирования. Если вы редактируете пользователя, у которого есть адрес электронной почты [email protected], и вы пытаетесь его сохранить, наличие уникального валидатора не позволит сохранить эту форму, поскольку она уже видит [email protected] в таблице (той, которую вы пытаетесь отредактировать). Таким образом, вы передаете идентификатор этого пользователя и проведете проверку.

Четвертый, вы просто объявляете имя основного столбца идентификатора. В большинстве случаев это не требуется, поскольку Laravel просто предполагает, что столбец первичного ключа называется id. Если по какой-либо причине ваш первичный ключ в таблице ваших пользователей равен user_id, вы должны пройти в user_id, чтобы он знал, какой столбец соответствует идентификатору.

+0

Спасибо, очень всеобъемлющий! – TechyTimo

Смежные вопросы