web-dev-qa-db-fra.com

Trop de champs à remplir dans le modèle Laravel?

J'ai environ 200 champs dans une table qui sont numérotés:

field_1
field_2
etc

J'ai essayé d'insérer des données dans le tableau:

Result::insert($data);

$data est un tableau multiple:

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

Puis-je définir * en option protected $fillable = ["*"]; pour rendre tous les champs remplissables?

19
Griboedov

Si vous devez définir toutes les colonnes comme remplissables, procédez comme suit dans le modèle:

protected $guarded = [];

Si vous souhaitez rendre tous les attributs assignables en masse, vous pouvez définir la propriété $ guarded comme un tableau vide

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

29
Alexey Mezenin

Dans un tel scénario, vous pouvez essayer de faire l'inverse. Par exemple: id, created_at et updated_at champ comme $ gardé. Comme:

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

Sauf que ces restes seront considérés comme fillable c'est-à-dire affectables en masse .

Vous pouvez trouver des détails dans Official Laravel Doc

Attributs de garde

Alors que $ fillable sert de " liste blanche " d'attributs qui devraient être assignable en masse, vous pouvez également choisir d'utiliser $ guarded . La propriété $ guarded doit contenir un tableau d'attributs que vous ne souhaitez pas affecter en masse. Tous les autres attributs ne figurant pas dans le tableau seront affectables en masse. Ainsi, $ guarded fonctionne comme une " liste noire ". Bien sûr, vous devez utiliser $ fillable ou $ guarded - not tous les deux.

19
Mahfuzul Alam