【Laravel】バリデーションルールの書き方のミスでSQLエラー “SQLSTATE[42S22]: Column not found:”
phpMyAdminでは存在するカラム名がないと言われる
SQLSTATE[42S22]: Column not found: 1054 Unknown column ' image_path' in 'where clause'
image_path
というカラムがありませんよ
って言われているけど、phpMyAdminで確認するとちゃんとある。
バリデーションルールの書き方が間違っている?
public function rules()
{
return [
'name' => 'required | max:100',
'image_path' => 'required | unique:characters', // uniqueの第2引数にimage_pathを入れていた
'genre_id' => 'required',
];
}
どうやらuniqueの第2引数にimage_pathを入れていたのが間違いだったよう。
消したらエラーが出なくなりました。
第2引数はカラム名
https://readouble.com/laravel/5.8/ja/validation.html
公式の説明では上記のように書いていますが、フィールド名とカラム名の違いがわかっていません。。。
とりあえず、同じものが挿入されないようにするなら
unique:テーブル名
としておけば良さそうです。
素人記事ですが、一応これでバリデーションはうまく行きました。
別の原因で発生することもあるようなので、他の記事も参考にしてください。
Author And Source
この問題について(【Laravel】バリデーションルールの書き方のミスでSQLエラー “SQLSTATE[42S22]: Column not found:”), 我々は、より多くの情報をここで見つけました https://qiita.com/mako0104/items/e3b875d800f7a83bfa28著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .