フォームを送信しようとすると、次のようなエラーが出るとき。
SQLSTATE[HY000]: General error: 1364 Field ‘×××’ doesn’t have a default value
値が編集可能な設定になっていない可能性があります。
該当しそうであれば、下記をお読みください。
1364 Field doesn’t have a default value Laravelエラー対策
このようなフォームに値を入力したいとします。
フォームに入力したデータが保存されるデータベースpostsは、次のようなテーブルです。
Postモデルファイルを開いてください。
protected $fillable の中にフォームを通じてデータベースに登録するカラム名を入れてあげます。
1 |
protected $fillable = ['title', 'body', 'path']; |
Postモデルファイルを保存した後、再度、フォームを試してみてください。
protected $filable でカラムのホワイトリストが作成できる
protected $fillable とは、Laravelが編集しても良いカラムを指定してあげるためのコードです。
いわばカラムの【ホワイトリスト】を作成するためのもの。
書き方例は次の通り。
protected $fillable = [‘カラム名A’, ‘カラム名B’, ‘カラム名C’];
【意味】カラムA、カラムB、カラムCは編集可能なカラムを指定できる。
protected $guarded でカラムのブラックリストが作成できる
ただカラムを忘れずに登録しておくのは面倒ですよね。
こういった場合には、protected $guarded が使えます。
いわばカラムの【ブラックリスト】作成するためのものです。
書き方例は次のとおり。
protected $guarded =[‘カラム名A’];
【意味】カラムA以外はすべて編集してOK。
例)
1 |
protected $guarded = ['created_at']; |
お好きなほうを使ってくださいね。