Первое о ne просто ищет в таблице пользователей, чтобы убедиться, что письмо уникально. Поскольку вы не указали столбец в качестве второго аргумента, предполагается, что имя столбца будет таким же, как и ключ, в данном случае email
.
Второй, просто объявляющий, какой столбец должен быть проверен для столбца электронной почты. В этом случае это не требуется, потому что столбец электронной почты email
, который уже предполагает Laravel. Если ваш столбец электронной почты в базе данных был назван как-то вроде user_email
, то вам нужно будет пройти в user_email
в валидатор, чтобы он знал, какой столбец проверяет адрес электронной почты.
Третий, вы должны передать идентификатор пользователя с этим электронным письмом. Это сообщит Laravel, что письмо должно быть уникальным, если только это письмо не будет установлено для этого идентификатора. Это полезно для форм редактирования. Если вы редактируете пользователя, у которого есть адрес электронной почты [email protected]
, и вы пытаетесь его сохранить, наличие уникального валидатора не позволит сохранить эту форму, поскольку она уже видит [email protected]
в таблице (той, которую вы пытаетесь отредактировать). Таким образом, вы передаете идентификатор этого пользователя и проведете проверку.
Четвертый, вы просто объявляете имя основного столбца идентификатора. В большинстве случаев это не требуется, поскольку Laravel просто предполагает, что столбец первичного ключа называется id. Если по какой-либо причине ваш первичный ключ в таблице ваших пользователей равен user_id
, вы должны пройти в user_id
, чтобы он знал, какой столбец соответствует идентификатору.
Примечание. Ваш третий и четвертый примеры не будут работать, поскольку '$ user-> email' не будет обрабатываться в одной кавычной строке. '$ rules = ['email' =>« email | unique: users, email, {$ user-> email}, email "]' будет работать. – ceejayoz
Исправлено. Спасибо за напоминание! – TechyTimo