Modelの中で記載する$fillableとは?
class Account extends Model { // protected $table = 'account'; protected $fillable = [ 'login', 'foo', 'hoge', ]; }
公式Eloquentのページを見てみます。
https://readouble.com/laravel/5.7/ja/eloquent.html
以下の記載があります。
—-
一行だけで新しいモデルを保存するには、createメソッドが利用できます。挿入されたモデルインスタンスが、メソッドから返されます。しかし、これを利用する前に、Eloquentモデルはデフォルトで複数代入から保護されているため、モデルへfillableかguarded属性のどちらかを設定する必要があります。
複数代入の脆弱性はリクエストを通じて予期しないHTTPパラメーターが送られた時に起き、そのパラメーターはデータベースのカラムを予期しないように変更してしまうでしょう。たとえば悪意のあるユーザーがHTTPパラメーターでis_adminパラメーターを送り、それがモデルのcreateメソッドに対して渡されると、そのユーザーは自分自身を管理者(administrator)に昇格できるのです。
ですから最初に複数代入したいモデルの属性を指定してください。モデルの$fillableプロパティで指定できます。たとえば、Flightモデルの複数代入でname属性のみ使いたい場合です。
—-
う~ 日本語がなんか滅茶苦茶だ。すっと頭に入ってこないぞ、と思ったが、よく読むと、HTTPリクエストのパラメーターがカラムを変更してしまうから、予めモデルの属性をfillableかguardedで設定すると書いてある。
なるほど、納得!!!