Laravel 模型计数在拉维工厂中的应用
我在Laravel 模型计数在拉维工厂中的应用,laravel,laravel-seeding,Laravel,Laravel Seeding,我在User和Post之间有一对多的关系。我使用一个数据库播种机和工厂来生成假数据。我想提供与下表类似的数据 用户 user_id | name ------- | ------ 1 | Tim 发布 post_id | FK:user_id | order --------|--------------|------- 1 | 1 | 0 2 | 1 | 1 3 |
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
再播两个
3 | 1 | 2
4 | 1 | 2
在我看来,Laravel正在运行查询之前生成所有insert语句。因此,Post::where(['user\u id'=>$user->user\u id)->count();
没有按预期增加
如何增加Post.order的值,使其始终是特定用户序列中的下一个数字?您始终可以在循环中为数据设定种子
for ($i = 0; $i < 10; $i++) {
factory(App\Post::class)->create();
}
($i=0;$i<10;$i++)的{
工厂(App\Post::class)->create();
}
您能详细说明这个答案吗?这里如何使用$i来增加“订单”列?