Laravel 5唯一验证不起作用


Laravel 5 Unique Validation Not Working

我是新来的Laravel 5,假设我有我的数据库上的名字和姓氏字段。我有这个验证?

public function create()
{
    $rules = array(
        'firstname'         => 'required:unique',
        'surname'           => 'required:unique',
        'phoneno'           => 'required',
        'mcmillan'          => 'required',
        'hri'               => 'required',
        'diabetes'          => 'required',
        'breastcancer'      => 'required',
        'gpt'               => 'required',
    );
    $validator = Validator::make(Input::all(), $rules);
    // Check if all fields is filled
    if ($validator->fails()) 
    {
        return Redirect::to('brk')->withErrors($validator);
    }
    else
    {
        $flag = Input::get('flag');
        /* If version 2 (Opt In) */
        if($flag == "1")
        {
            if(Input::get('opt') != "")
            {
                $optMethod = Input::get('opt');
            }
            else
            {
                $optMethod = 'OptOut';
            }
        }
        else if($flag == "0") /* If version 1 (Opt Out) */
        {
            if(Input::get('opt') != "")
            {
                $optMethod = Input::get('opt');
            }
            else
            {
                $optMethod = 'OptIn';
            }
        }
        $firstname      = Input::get('firstname');
        $surname        = Input::get('surname');
        $phoneno        = Input::get('phoneno');
        $mcmillan       = Input::get('mcmillan');
        $hri            = Input::get('hri');
        $diabetes       = Input::get('diabetes');
        $breastcancer   = Input::get('breastcancer');
        $gpt            = Input::get('gpt');
        $brk = new 'App'Http'Models'BrkDailyMail;
        $brk->firstname            = $firstname;
        $brk->surname              = $surname;
        $brk->phoneno              = $phoneno;
        $brk->mcmillan             = $mcmillan;
        $brk->hri                  = $hri;
        $brk->diabetes             = $diabetes;
        $brk->breastcancer         = $breastcancer;
        $brk->gpt                  = $gpt;
        $brk->OptMethod             = $optMethod;
        $brk->hostname             = Request::root().'/brk';
        $brk->save();
        Session::flash('alert-success', 'Form Submitted Successfully.');
        /* If version 2 (Opt In) */
        if($flag == "1")
        {
            return Redirect::to('brk2');
        }
        else if($flag == "0") /* If version 1 (Opt Out) */
        {
            return Redirect::to('brk');
        }
    }
}

表单还在提交?有什么问题吗?似乎验证不起作用?

表单应该有一些错误,对吗?但它仍然插入数据库

$rules = array(
    'firstname' => 'required|unique:users',
    'surname'   => 'required|unique:users',
);

阅读更多:

  • http://laravel.com/docs/5.0/validation基本用法
  • http://laravel.com/docs/5.0/validation rule-unique

你好像搞错了

'required:unique'
应该

'required|unique'

我在使用Laravel 5.8时遇到了这个问题。我已经用这种方法解决了它。

$validator = Validator::make($request->all(), [
                    'username'     =>  "required|unique:users,username",
                    'password'   =>  "required",
                    ]
                );

在此之前,我得到了从Laravel验证错误。当我进行验证时,我使用了unique:users。这样Laravel就不能确定哪个列在表用户中应该是唯一的。我应该补充一下unique:users,username指定用户表中唯一的列username。

这篇文章帮助了我。

解决方案:确保在双引号中写入验证,如:"required"

 $validator = Validator::make($request->all(), [
                    'client_id'     =>  "required",
                    'chapter_name'   =>  "required|unique:chapters",
                    ]
                );
               /** Return Error Message **/
        if ($validator->fails()) {
                    $error_msg  =   [];
                                foreach ( $validator->messages()->messages() as $key => $value) {
                      $error_msg[$key] =   $value[0];
                    } 
        }  print_r($error_msg);