Laravel 5 如何在laravel5中为firstname和lastname的组合添加唯一验证?

Laravel 5 如何在laravel5中为firstname和lastname的组合添加唯一验证?,laravel-5,Laravel 5,我需要验证其中没有重复组合(firstname和lastname)的用户表。例如:-firstname=dc lastname=patel已存在于表中。下次我需要阻止相同的条目。若数据库提供这种可能性,您可以使用类似的东西在表中合成唯一键 使用laravel唯一验证规则 如何允许具有相同姓氏但不具有姓氏的用户进行注册 唯一。firstname使用给定firstname和lastname的首次检查记录计数。 如果计数为“0”,请保存记录或显示消息 下面是一些代码提示 $users = DB::ta

我需要验证其中没有重复组合(firstname和lastname)的用户表。例如:-firstname=dc lastname=patel已存在于表中。下次我需要阻止相同的条目。

若数据库提供这种可能性,您可以使用类似的东西在表中合成唯一键


使用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子句并使用它