今やっていること
Laravel6を使って簡単な掲示板機能の作成中。
最初の新規登録でつまりました。
表示されたエラー
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'field list'
このエラーの解決方法はいろんな記事で読みましたが、イマイチ解決できず。
新規登録の機能を実装しているRegisterControllerを見直してみました。
解決方法
RegisterController.php
public function register(Request $request){
if($request->isMethod('post')){
$data = $request->input();
$validator = Validator::make($data,[
'username' => 'required|max:30',
'email' => 'required|max:100|email:rfc,dns|unique:users,mail',
'password' => 'required|min:8|max:30|confirmed',
'password_confirmation' => 'required|min:8|max:30',
]);
if($validator->fails()){
return redirect('/register')
->withErrors($validator)
->withInput();
} else {
$this->create($data);
return redirect('added');
}
}
return view('auth.register');
}
新規登録後、「登録ありがとうございます」と表示されている画面へ移行するように書いています。
これは以前作っていたSNS開発のコードをそのままコピーして改変していたのですが、ここの部分
RegisterController.php
'email' => 'required|max:100|email:rfc,dns|unique:users,mail',
MySQLのテーブルは、"email"という名前でしたので、uniqueのカラム名を変えていないことが原因でした。
本当にしょうもないミス😭
RegisterController.php
'email' => 'required|max:100|email:rfc,dns|unique:users,email',
これで問題なくDBに登録ができました👌🏻
まとめ
以前のコードをコピーするときはDB名を見直そう!(当たり前)
バリデーションの登録が原因であることはあまり書かれている記事を見かけなかったので記事にしてみました。すぐにエラーの原因が見つかってよかったです!