Je souhaite créer un ensemble d'instances d'un objet modèle dans Laravel, puis sélectionner l'instance optimale et l'enregistrer dans la base de données. Je sais que je peux créer une instance avec Model::create([])
, mais cela enregistre dans la base de données. Si possible, j'aimerais créer plusieurs modèles, puis "créer" celui qui convient le mieux.
Est-ce possible?
J'utilise Laravel 5.0
Vous créez un nouveau modèle simplement en l'instanciant:
$model = new Model;
Vous pouvez ensuite l'enregistrer dans la base de données ultérieurement:
$model->save();
Vous pouvez créer des instances avec Model::make()
. Cela fonctionne de la même manière que create
mais cela ne l’enregistre pas.
Que ce soit ou non la meilleure pratique est une autre affaire.
Oui, il y a différentes manières: vous pouvez utiliser le assignation de masse sans sauvegarder.
N'oubliez pas de définir d'abord la propriété $fillable
dans votre modèle.
WAY # 1: en utilisant la méthode fill
$model = new YourModel;
$model->fill([
'field' => 'value',
'another_field' => 'another_value'
]);
$model->save();
WAY # 2: en utilisant le constructeur
$model = new YourModel([
'field' => 'value',
'another_field' => 'another_value'
]);
$model->save();
Documentation Laravel: https://laravel.com/docs/5.7/eloquent