Как предотвратить вставку электронной почты, если она уже существует с определенным идентификатором в laravel?

У меня есть таблица, в которой я пытаюсь хранить адреса электронной почты. Эти адреса электронной почты будут сохранены с user_id,

Например в email_list Таблица

|ID | user_id | email          |
...............................
| 1 | 101     | john@gmail.com |
...............................
| 2 | 102     | john@gmail.com |

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

В настоящее время я пытаюсь выполнить простую проверку Laravel, как это.

'email' => 'required|unique:email_list|email',

Так есть ли способ проверить уже существующие адреса электронной почты, если строка имеет тот же user_id? Я использую Laravel 5.2. Я хотел бы оценить, если кто-то направляет меня. Спасибо

Отредактировано через 3 часа

Я также добавляю тот же вопрос в github, что и проблема. Человек говорит, что я должен создать собственное правило проверки.

2 ответа

Принуждение уникального правила игнорировать данный идентификатор

Вы можете указать ID, который будет игнорироваться, в качестве необязательного третьего параметра. Кроме того, если ваша таблица использует имя столбца первичного ключа, отличное от id, вы можете указать его как необязательный четвертый параметр

'email' => "unique:{$table},{$field},{$user->id},{$idField}"

Так что в вашем случае это было бы следующим

'email' => "unique:email_list,email,{$user->id},user_id'

Это против существующего правила.
Прежде всего, проверка существующего правила, основанная на условии, являются ли поля доступными или нет.
Я думаю, если мы использовали это как противоположность, то это полезно для вас.

Пример:-

     'email' => 'exists:email_list,email,user_id,!102'

т.е.

     'email' => 'exists:email_list,email,user_id,!'. $user_id        

иначе,

     'email' => 'exists:email_list,email,user_id,!'. Input::get(user_id)

при использовании ввода и импорта

    use Illuminate\Support\Facades\Input;        

и изменить содержание сообщения
Пожалуйста, попробуйте это и ответьте, что случилось.. или это работает для вас..?

Другие вопросы по тегам