web-dev-qa-db-fra.com

Pouvez-vous créer une nouvelle instance de modèle sans l'enregistrer dans la base de données

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

22
ajon

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();
35
Joseph Silber

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.

5
Kris Tremblay

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

0
Dan