Laravel - 列未找到,即使它存在于数据库中

Laravel - Column not found, when it exists in database

我正在尝试注册 class 个用户(客户),但我目前遇到此错误:

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

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

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');
        }
    }

路线:

Route::post('/register/customer', 'Auth\RegisterController@createCustomer')->name('customer.submit');

register.blade.php:

<form method="POST" action='{{ route("$url.submit") }}' aria-label="{{ __('Register') }}">

                        <p>{{ route("venue.submit") }}</p>
                       <!--  <p style="position: relative; bottom: 50px;">{{ $url }}</p> -->
                       @foreach($errors->all() as $error)
                            <div>
                               {{$error}}
                            </div>
                       @endforeach
                    @else
                     <form method="POST" action="{{ route('venue.submit') }}" aria-label="{{ __('Register') }}">
                    @endisset
                        @csrf

...etc

用户:

protected function validator(array $data)
    {
        return Validator::make($data, [
            'username' => ['required', 'alpha_dash', 'string', 'max:25', 'unique:users'],
            'fname' => ['required', 'alpha', 'string', 'max:15'],
            'lname' => ['required', 'alpha', 'string', 'max:15'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
            // $profile = new profile();
            // $profile->user_id = $data[''];
        return User::create([
            'username' => $data['username'],
            'lname' => $data['lname'],
            'fname' => $data['fname'],
            'email' => $data['email'],

            'password' => Hash::make($data['password']),
        ]);
    }

任何帮助都会很棒!谢谢 :)

您正在验证没有名称列的用户 table 中的唯一性。所以它给了你错误。请改用客户 table。

$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'],
        ]);

您的错误表明在 users table 中找不到该列,并且您提到该列存在于 customers table.

请验证您是否使用了 protected $table = 'tableName'; 属性,如果使用了,请检查是否指定了正确的 table 名称。