web-dev-qa-db-ja.com

モデルLaravelの入力可能フィールドが多すぎますか?

テーブルには約200個のフィールドがあり、番号が付けられています。

field_1
field_2
etc

テーブルにデータを挿入しようとしました:

Result::insert($data);

$dataは複数の配列です。

$data = [] = array("field_1" => 3);
$data = [] = array("field_1" => 2);

オプション*protected $fillable = ["*"];を設定して、すべてのフィールドに入力可能にすることはできますか?

19
Griboedov

すべての列を入力可能として設定する必要がある場合は、モデルでこれを実行します。

protected $guarded = [];

すべての属性を一括で割り当て可能にしたい場合は、$ guardedプロパティを空の配列として定義できます

https://laravel.com/docs/5.3/eloquent#mass-assignment

29
Alexey Mezenin

そのようなシナリオでは、逆の操作を試みることができます。例:idcreated_atおよびupdated_atフィールドは$ guardedです。のような:

protected $guarded = ['id', 'created_at', 'updated_at'];

これらの残りの部分はfillableと見なされます(つまり、mass assignable)。

詳細は Official Laravel Doc

保護属性

$ fillableは、必要な属性の「ホワイトリスト」として機能します一括割り当てが可能な場合は、$ guardedを使用することもできます。 $ guardedプロパティには、大量に割り当てたくない属性の配列が含まれている必要があります。配列にない他のすべての属性は、一括割り当て可能です。したがって、$ guardedは、「ブラックリスト」のように機能します。もちろん、$ fillableまたは$ guarded-notのいずれかを使用する必要があります両方。

19
Mahfuzul Alam