php - Laravel - 找不到列,当它存在于数据库中时
问题描述
我正在尝试注册一类用户(客户),我目前遇到了这个错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'where clause' (SQL: select count(*) as aggregate from `users` where `name` = john123)
该列确实存在于数据库表“客户”中,另外这个 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']),
]);
}
任何帮助都会很棒!谢谢 :)
解决方案
您正在验证没有名称列的用户表中的唯一性。所以它给你错误。请改用客户表。
$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'],
]);
推荐阅读
- r - 不平衡面板数据转长格式
- shell - 语法错误:文件结尾意外(预期为 fi)
- bash - bash 函数、局部变量和退出代码
- c - 如何使用 gtk_label_set_attributes 更改 GtkLabel 的文本大小?
- docker - docker中的Apache重写不适用于PHP文件
- bash - 我怎样才能运行这个 bash 脚本需要一起添加两个评论
- ios - 无法在使用 iOS 9 的设备上安装 Firebase 分发版本
- java - 二维数组列表会自动更新列表中的所有二维数组,并使用 java 中最后提供的二维数组
- python - 无法通过 pywin32 使用 Excel 选择活动打印机
- javascript - 如何通过 Chrome 扩展程序捕获 cookie