Laravel 5
При проверке формы laravel 5 мне нужно, чтобы электронная почта была уникальной только для идентификатора определенного поля в таблице db.
$this->validate($request,[
'name'=>'required',
'email' => 'unique:users,email,',
'password'=>'required',
]);
3 ответа
Вы можете попробовать такой способ:
$companyId = $request->get('company_id'); // selected company
$this->validate($request,[
'name' => 'required',
'email' => [
'required',
"unique:users,email,NULL,id,company_id,$companyId"
],
'password'=>'required',
]);
Если вы хотите игнорировать определенный идентификатор в базе данных, вы можете использовать ignore
. Например, когда пользователь обновляет свой профиль, мы хотим разрешить ему отправлять свой адрес электронной почты, это не должно считаться a not unique
.
Вот подробные сведения о документах. И вот ваш код обновлен, чтобы соответствовать этому:
$this->validate($request,[
'name'=>'required',
'email' => [
\Illuminate\Validation\Rule::unique('users', 'email')->ignore($user->id),
],
'password'=>'required',
]);
Однако, если вы хотите игнорировать более чем one
id или хотите настроить запрос, вам необходимо добавить предложение where
:
$this->validate($request,[
'name' => 'required',
'email' => [
'required',
\Illuminate\Validation\Rule::unique('users')->where(function ($query) {
// Add any constraints you want for the query here.
return $query->whereNotIn('id', [1, 2, 3, 4]);
}),
],
'password'=>'required',
]);
Используйте параметры Third
и Fourth
, чтобы игнорировать company_id
$company_id = 1;// Company will be here
И при проверке
'email' => 'unique:users,email,'.$company_id.',company_id',
Похожие вопросы
Новые вопросы
laravel
Laravel - это бесплатная веб-инфраструктура PHP с открытым исходным кодом, созданная Тейлором Отвеллом и предназначенная для разработки веб-приложений по архитектурному шаблону модель-представление-контроллер (MVC) на основе Symfony. Исходный код Laravel размещен на GitHub и лицензирован в соответствии с условиями лицензии MIT.
certain field's id
?