Laravel-工厂在数据透视表上播种唯一数据


Event::factory(5)
->hasAttached(
Team::factory()->count($this->faker()->numberBetween(0, 60)),
[
'team_name' => $this->faker()->unique()->name,
'score' => $this->faker()->numberBetween(0, 50)
],
'participants'
)
->create([
'user_id' => $user,
'quiz_id' => $quiz
]);

上述代码片段使用所述$quiz为所述$user创建5个事件。它将具有随机量的participants,这是一个数据透视表(TeamEvent(。在该数据透视表上有一个team_namescore列。因为各队可以更改队名,我们想知道参赛时的队名,以及他们在比赛中的得分。

对于当前代码,由于$this->faker()->numberBetween(0, 60)$this->faker()->unique()->name$this->faker()->numberBetween(0, 50)不是在迭代中求值的,因此所有数据透视表数据都是相同的。

如何使每个数据透视行的数据不同?

TIA-

想清楚了;

Event::factory(5)
->hasAttached(
Team::factory()->count($this->faker()->numberBetween(0, 60)),
function() {
return [
'team_name' => $this->faker()->unique()->name,
'score' => $this->faker()->numberBetween(0, 50)
];
},
'participants'
)
->create([
'user_id' => $user,
'quiz_id' => $quiz
]);

最新更新