User
我在和之间有一对多的关系Post
。我正在使用数据库播种机和工厂来生成假数据。我想生成与下表类似的数据。
用户
user_id | name
------- | ------
1 | Tim
邮政
post_id | FK:user_id | order
--------|--------------|-------
1 | 1 | 0
2 | 1 | 1
3 | 1 | 2
4 | 1 | 3
为此,我创建了一个工厂,它选择一个随机用户并计算与该用户关联的帖子数
$factory->define(App\Post::class, function (Faker\Generator $faker) {
$user = App\User::inRandomOrder()->firstOrFail();
$order = Post::where(['user_id' => $user->user_id])->count();
return [
'user_id' => $user->user_id,
'order' => $order,
];
});
播种2柱产生。
post_id | FK:user_id | order
--------|--------------|-------
1 | 1 | 0
2 | 1 | 0
再播2个
3 | 1 | 2
4 | 1 | 2
在我看来,Laravel 在运行查询之前生成了所有插入语句。所以Post::where(['user_id' => $user->user_id)->count();
不会按预期增加。
如何递增Post.order
以使其始终是特定用户序列中的下一个数字?