Laravel 5 如何在laravel5中为firstname和lastname的组合添加唯一验证?
我需要验证其中没有重复组合(firstname和lastname)的用户表。例如:-firstname=dc lastname=patel已存在于表中。下次我需要阻止相同的条目。若数据库提供这种可能性,您可以使用类似的东西在表中合成唯一键Laravel 5 如何在laravel5中为firstname和lastname的组合添加唯一验证?,laravel-5,Laravel 5,我需要验证其中没有重复组合(firstname和lastname)的用户表。例如:-firstname=dc lastname=patel已存在于表中。下次我需要阻止相同的条目。若数据库提供这种可能性,您可以使用类似的东西在表中合成唯一键 使用laravel唯一验证规则 如何允许具有相同姓氏但不具有姓氏的用户进行注册 唯一。firstname使用给定firstname和lastname的首次检查记录计数。 如果计数为“0”,请保存记录或显示消息 下面是一些代码提示 $users = DB::ta
使用laravel唯一验证规则 如何允许具有相同姓氏但不具有姓氏的用户进行注册
唯一。firstname使用给定firstname和lastname的首次检查记录计数。 如果计数为“0”,请保存记录或显示消息 下面是一些代码提示
$users = DB::table('users')
->where(['firstname' => 'dc', 'lastname' => 'patel'])
->count();
if($users === 0) {
// save the record.
} else {
// Show message
}
最后我有了完美的解决方案
$validationRule = ['first_name' => 'required','last_name'=>'required'];
$validationMsg = ['first_name.required' => 'First Name is required', 'last_name.required' => 'Last Name is required'];
$validation = Validator::make(['first_name' => $firstName, 'last_name' => $lastName], $validationRule, $validationMsg);
$validation->after(function ($validation) use ($firstName, $lastName) {
$checkName = User::where('first_name', $firstName)->where('last_name', $lastName)->get();
if (count($checkName) > 0) {
$validation->errors()->add('first_name', 'User already exists, please enter another user.');
}
});
if ($validation->fails()) {
foreach ($validation->errors()->all() as $error) {
$message = $error;
}
return response(\Helpers::makeAjaxResponse(false, $message));
} else {
//Save record code here
}
由于Laravel 5.5,您可以使用优雅的类,如:
use Illuminate\Validation\Rule;
// ...
$firstNameUniqueRule = Rule::unique('users')->where('last_name', request()->get('last_name', ''));
$rules = [
'first_name' => ['required', $firstNameUniqueRule],
'last_name' => 'required',
];
谢谢,但是你的例子对我没有用处。因为我正在使用laravel验证类进行验证。目标是使
名
+姓
的组合唯一,而不是使名
和姓
唯一。如果tomjones
注册,我们希望tombrady
也能够注册。这不是完美的解决方案。只需使用唯一验证规则。向下滚动一点,直到发现添加了额外的Where子句并使用它