【发布时间】:2023-03-06 12:37:01
【问题描述】:
我正在尝试在 Laravel 5.4 中使用 fzaninotto/faker 和 factory 创建一个假数据播种器。我想向工厂发送一个数据数组,我可以在其中使用faker选择一个随机元素。该数组是数据库查询的结果,我不想在 Modelfactory 中递归地执行此操作。这是我所做的。
在播种机中,它调用工厂。
factory(App\Models\Types::class, 10)->create();
在Modelfactory中,函数如下
$factory->define(App\Models\Types::class, function (Faker\Generator $faker) {
$materials = App\Models\Material::pluck('id')->all();
return [
'name' => $faker->unique()->word,
'material_id' => $faker->randomElement($materials),
'status' => 1,
'display_status' => 1,
];
});
数组$materials 是在每个循环中通过对Material 的模型调用创建的,我想避免这种情况。播种更多数据(比如 100000)需要太多时间。是否有任何选项将数据从播种机文件传递到工厂?在工厂定义之前移动模型调用现在可以解决我的问题,因为材质是在其他播种器文件中播种的,这会导致空数组,因为默认情况下会在开头加载 Modelfactory。
【问题讨论】:
标签: php laravel laravel-5.4 factory faker