wake-up-neo.com

Zu viele ausfüllbare Felder im Modell Laravel?

Ich habe ungefähr 200 Felder in einer Tabelle, die nummeriert sind:

field_1
field_2
etc

Ich habe versucht, Daten in die Tabelle einzufügen:

Result::insert($data);

Wo $data ist ein Mehrfacharray:

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

Kann ich * in Option protected $fillable = ["*"];, um alle Felder ausfüllbar zu machen?

19
Griboedov

Wenn Sie alle Spalten als ausfüllbar festlegen müssen, gehen Sie im Modell wie folgt vor:

protected $guarded = [];

Wenn Sie alle Attribute einer Masse zuweisbar machen möchten, können Sie die Eigenschaft $ guarded als leeres Array definieren

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

29
Alexey Mezenin

In einem solchen Szenario können Sie versuchen, das Gegenteil zu tun. Zum Beispiel: id, created_at und updated_at Feld als $ geschützt. Mögen:

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

Mit der Ausnahme, dass dieser Rest als fillable betrachtet wird, d. H. massenzuweisbar .

Details finden Sie in Official Laravel Doc

Schutzattribute

Während $ fillable als " weiße Liste " von Attributen dient, die sollten Sie können auch festlegen, dass die Masse zugewiesen werden soll. Sie können auch $ guarded verwenden. Die Eigenschaft $ guarded sollte ein Array von Attributen enthalten, die Sie nicht massenweise zuweisen möchten. Alle anderen Attribute, die nicht im Array enthalten sind, können einer Masse zugewiesen werden. $ guarded funktioniert also wie eine " schwarze Liste ". Natürlich sollten Sie entweder $ fillable oder $ guarded - not verwenden beide.

19
Mahfuzul Alam