Возвращаемое значение фабрики Laravel (в обработчике afterCreating)

Я создаю фабрику и использую ловушку afterCreating для вставки некоторых связей.

Это код:

$factory->define(MyModel::class, function (Faker $faker) {
return [
'name'                          => $faker->name
];
});

$factory->afterCreating(MyModel::class, function ($my_model, $faker) {

// Make changes to my model, add relationships to it

return $my_model; // or return "test"});

У меня вопрос, как вернуть измененную модель, модифицированную в afterCreating ()? Возможно ли это сделать?

Я получаю исходную модель, созданную в первом методе. API документации Laravel заявляет, что возвращает $ this, что говорит мне, что это экземпляр afterCreating, но это не так.

Спасибо!

0

Решение

Вы путаете возвращаемое значение метода afterCreating с возвращаемым значением вашей функции обратного вызова.
Чтобы ответить на ваш вопрос: да, это возможно, и вы уже написали правильную версию.

0

Другие решения

Заводские обратные вызовы регистрируются с помощью afterMaking а также afterCreating методы и позволяют выполнять дополнительные задачи после создания или создания модели.

Возвращаемое значение метода afterCreating является $ this- Это означает, что экземплярная модель (если она затронута) уже основана на действии внутри функции afterCreating. Эти обратные вызовы являются, например, чистым способом автоматического сохранения реляционных данных после создания новой модели на заводе.

$factory->afterCreating(MyModel::class, function ($myModel, $faker) {
$myModel->items()->save(factory(Item::class)->make());
});
0

По вопросам рекламы [email protected]