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来增加“订单”列?