0
User
とPost
の間に1対多の関係があります。私は偽のデータを生成するためにデータベースシーダーと工場を使用しています。次の表に同様のデータを出力したいと思います。Laravel工場でのモデル数の使用
ユーザー
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は、クエリを実行する前に、INSERT文の全てを生成しているように私には見えます。したがって、Post::where(['user_id' => $user->user_id)->count();
は予想通りに増加しません。
Post.order
をどのように増分して、特定のユーザーのシーケンスの次の番号にするのですか?