概要
テーブルに対して、複数の値を代入する場合は、悪意のあるユーザが、HTTPリクエストでどんな値を挿入するのかが分からないため、Eloquentではデフォルトで複数代入の脆弱性から保護されています。
※複数代入=createメソッドやfillメソッドを利用する場合の事です
HTTPリクエストでどんな値が挿入されるか分からない。というのは、例えば、ユーザの権限テーブルがあった場合に、ユーザが管理者権限に格上げしてしまったら、アプリケーションを乗っ取られてしまいます。
なので、複数代入する場合は、更新していいカラムと、更新しちゃダメなカラムを設定する必要があります。
その設定をするのが、今回のfillableとguardedプロパティになります。
// fillableは、ホワイトリスト方式を採用しているため、ここで設定した値のみ変更できます。
protected $fillable = [
'name',
];
// guardedは、ブラックリスト方式を採用しているため、ここで設定した値は変更できない。
protected $guarded = [
'id',
'status',
];