Электронная почта уникальна в БД для каждого клиента

Я использую laravel 5.4 с кушеткой с php 7.1.

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

'email'        => 'required|email|unique:users,email,NULL,user_id,datetime_deleted,NULL',

Это работало нормально. Теперь у нас есть новый запрос к нашему приложению, что электронная почта пользователя должна быть уникальной не для всей пользовательской таблицы, а для одного клиента, поэтому у нас может быть несколько раз один и тот же адрес электронной почты, но с различиями в ' client_id» в документе.

Как я могу поместить это в свой Request-Class?


person Paladin    schedule 22.06.2017    source источник
comment
Проверьте ответ здесь. Надеюсь, это поможет вам   -  person Ruchi    schedule 22.06.2017


Ответы (1)


Для laravel 5.3 и выше вы можете добавить дополнительное предложение where для уникальной проверки, как показано ниже.

'email' => Rule::unique('users')->where(function ($query) {
    $query->where('user_id', Auth::user()->id);
})

не забудьте упомянуть использование Illuminate\Validation\Rule;

ИЛИ попробуйте laravel 5.2

Во время вставки

'email' => 'unique:users,email,NULL,id,user_id,'.Auth::user()->id,

Во время обновления

'email' => 'unique:users,email,{id of object to edit},id,user_id,'.Auth::user()->id,

В приведенном выше правиле только строки с user_id Auth::id() будут включены в проверку уникальности.

person Ruchi    schedule 22.06.2017