Возвращаемое значение фабрики 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, но это не так.
Спасибо!
2 ответа
Вы путаете возвращаемое значение метода afterCreating
с возвращаемым значением вашей функции обратного вызова. Чтобы ответить на ваш вопрос: да, это возможно, и вы уже написали правильную версию.
Заводские обратные вызовы регистрируются с помощью afterMaking
а также afterCreating
методы, и позволяют вам выполнять дополнительные задачи после создания или создания вашей модели.
Возвращаемое значение метода afterCreating
это $this, что означает, что экземплярная модель (если она затронута) уже основана на действии внутри функции afterCreating. Эти обратные вызовы являются, например, чистым способом автоматического сохранения реляционных данных после создания новой модели на заводе.
$factory->afterCreating(MyModel::class, function ($myModel, $faker) {
$myModel->items()->save(factory(Item::class)->make());
});