【发布时间】:2021-03-29 17:46:14
【问题描述】:
我正在使用 Laravel 8 和 PHP v7.4 我有一个模型,它的模式是通过以下迁移生成的。
创建竞赛表
public function up()
{
Schema::create('contests', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->foreignId('contest_id')->nullable();
$table->foreign('contest_id')->references('id')->on('contests');
});
}
一个contest 可以有多个contests。为此,我生成了一个工厂类。
竞赛工厂
public function definition()
{
return [
'name' => $this->faker->paragraph(),
];
}
竞赛播种机
public function run()
{
\App\Models\Contest::factory(10)->create([
'contest_id' => array_rand(\App\Models\Contest::all()->pluck('id')->toArray())
]);
}
上面会抛出以下错误。
错误异常 array_rand(): 数组为空
我该如何解决这个问题?
【问题讨论】:
-
那时它们还没有被创建……你可以在它们全部创建后调用
create()->each(...)来遍历它们 -
谢谢@lagbox 如果这是我会接受的答案。
create()->each(...)是我需要的
标签: php laravel laravel-8 laravel-seeding