Я пытаюсь создать два разных набора сеялок и пытаюсь использовать заводские состояния Laravel, чтобы указать разные фабрики для каждой сеялки.Вот базовый пример BoopieFactory:
$factory
->state(App\Models\Boopie::class, 'one_flavored', function (Faker $faker) {
return [];
});
$factory
->state(App\Models\Boopie::class, 'two_flavored', function (Faker $faker) {
return ['something different'];
});
Тогда я предполагал, что могу позвонить либо factory(\App\Models\Boopie::class, 25)->states('one_flavored')->create();
, либо factory(\App\Models\Boopie::class, 25)->states('two_flavored')->create();
.Это приводит к вышеупомянутой Unable to locate factory with
name [default] [App\Models\Boopie].
ошибке.Я что-то здесь упускаю, или это просто полное неправильное понимание заводских состояний?Или мне еще нужно сначала определить фабрику, а затем состояние цепочки?Документы Ларавела, как правило, отличные, но в этом отделе не хватает.Я также смотрел на defineAs
(недокументированный, но в красноречивом исходном коде), чтобы попытаться создать два разных псевдонима для одного и того же класса с разными значениями возврата.Что-то вроде:
$factory
->defineAs(App\Models\Boopie::class, 'OneFlavor', function (Faker $faker) {
return [];
});
$factory
->defineAs(App\Models\Boopie::class, 'TwoFlavor', function (Faker $faker) {
return ['Something different'];
});
А потом я пытаюсь позвонить так: factory('OneFlavor', 25)->create();
и получаю исключение: Class 'OneFlavor' not found
.Возможно, есть и другой способ сделать это вообще, или я просто что-то упустил?Я также пытался вложить это так, что кажется ближе, но все же есть исключение: Unable to locate [oneFlavor] state for [App\Models\Boopie].
$factory->define(App\Models\Boopie::class, function (Faker $faker) use ($factory) {
$factory->state(App\Models\Boopie::class, 'oneFlavor', function ($faker) {
return [];
});
$factory->state(App\Models\Boopie::class, 'twoFlavor', function ($faker) {
return ['Someting different'];
});
return [];
});
Заранее спасибо ?!