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

时间:2017-01-17 07:10:18

标签: laravel-5

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

5 个答案:

答案 0 :(得分:2)

最后,我有完美的解决方案。

$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
            }

答案 1 :(得分:0)

如果数据库提供了这种可能性,你可以使用simular的东西在表中复合UNIQUE键。

http://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html

答案 2 :(得分:0)

使用laravel唯一验证规则 如何允许具有相同姓氏但不是名字的用户进行注册?

unique.firstname

答案 3 :(得分:0)

首先使用给定的名字和姓氏检查记录计数。 如果计数为“0”,请保存记录或显示消息。

以下是一些代码提示

$users = DB::table('users')
            ->where(['firstname' => 'dc', 'lastname' => 'patel'])
            ->count();

if($users === 0) {
    // save the record.
} else {
    // Show message
}

答案 4 :(得分:0)

从Laravel 5.5开始,您可以使用优雅的Rule类,如:

use Illuminate\Validation\Rule;

// ...

$firstNameUniqueRule = Rule::unique('users')->where('last_name', request()->get('last_name', ''));

$rules = [
    'first_name' => ['required', $firstNameUniqueRule],
    'last_name' => 'required',
];