猿问

Laravel - 找不到列,当它存在于数据库中时

我正在尝试注册一类用户(客户),但我目前遇到了这个错误:


SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'where clause' (SQL: select count(*) as aggregate from `users` where `name` = john123)

该列确实存在于数据库表“customers”中,另外这个 Laravel 生成的 SQL 查询看起来很奇怪? 注册控制器:


protected function createCustomer(Request $request)

    {

        // dd($request->all());

        // $this->validator($request->all())->validate();

        $validator = Validator::make($request->all(), [

            'name' => ['required', 'alpha_dash', 'string', 'max:25', 'unique:users'],

            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],

            'password' => ['required', 'string', 'min:6', 'confirmed'],

        ]);

        if ($validator->fails())

        {

            $messages = $validator->messages();

            return Redirect::back()->withErrors($validator)->withInput();

            foreach($errors->all() as $error) {

            echo $error;

        }

        }

        elseif ($validator->passes())

        {

            $customer = customer::create([

                'name' => $request['name'],

                'email' => $request['email'],

                'password' => Hash::make($request['password']),

            ]);

            return redirect()->intended('login/customer');

        }

    }


任何帮助都会非常棒!谢谢 :)


茅侃侃
浏览 273回答 2
2回答

慕婉清6462132

您正在验证没有 name 列的 users 表中的唯一性。所以它给了你错误。改用客户表。$validator = Validator::make($request->all(), [            'name' => ['required', 'alpha_dash', 'string', 'max:25', 'unique:customers'],            'email' => ['required', 'string', 'email', 'max:255', 'unique:customers'],            'password' => ['required', 'string', 'min:6', 'confirmed'],        ]);

qq_花开花谢_0

您的错误表示在users表中找不到该列,并且您已经提到该列存在于customers表中。请验证您是否使用了protected $table = 'tableName';属性,如果使用了请检查是否指定了正确的表名。
随时随地看视频慕课网APP
我要回答