【Laravel】バリデーションルールの書き方のミスでSQLエラー “SQLSTATE[42S22]: Column not found:”


phpMyAdminでは存在するカラム名がないと言われる

SQLSTATE[42S22]: Column not found: 1054 Unknown column ' image_path' in 'where clause'

image_pathというカラムがありませんよ
って言われているけど、phpMyAdminで確認するとちゃんとある。

バリデーションルールの書き方が間違っている?

CharacterRequest.php
    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:テーブル名

としておけば良さそうです。

素人記事ですが、一応これでバリデーションはうまく行きました。

別の原因で発生することもあるようなので、他の記事も参考にしてください。