お問合わせ開発ブログ株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。Assignment時に複数のホワイトリストを使い分けるこんにちは、中榮です。Assignmentの設定の肝は、ブラックリストの設定である$guardedプロパティとホワイトリストの設定である$fillableプロパティです。この2つを設定することでModel::fill()の引数に与えられた連想配列のうち、どの項目をModelにAssignできるかが決まります。項目名がアンダースコアで始まっていれば不可その他は可というフローでチェックされます。guardedの初期設定はアスタリスクのみの配列(=全項目がブラックリスト)、fillableの初期設定は空配列(=ホワイトリストが空)となっています。Assignmentは全くできない状態です。実用的には$fillableのホワイトリストに最低限の許可を与えるのが良い習慣だと思います。該当のModelクラスに直接$fillableを設定すれば良いと思います。複雑なアプリケーションだと、権限に応じて入力可能な項目を変更する場合、編集フォームが複数ある場合など、フィルタする入力項目を変えたいケースがよくあります。$fillableはprotectedプロパティなので直接変更することはできませんが、Model::fillable()メソッドによりインスタンスごとに設定が可能です。必要以上の入力項目がModelのインスタンスに渡ることを防げます。Parametersと似たような発想ですね。セキュリティリスクや不具合の低減には役に立ちます。その分一手間増えるので、「Modelが更新されないと思ったらfillable()呼んでなかった!!!」という罠にはまる可能性は大いにあるので気をつけてください。お問合わせプライバシーポリシ。