2017-05-26 15 views
0

UserPostの間に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をどのように増分して、特定のユーザーのシーケンスの次の番号にするのですか?

答えて

0

いつでもデータをループ内に配置できます。

for ($i = 0; $i < 10; $i++) { 
    factory(App\Post::class)->create(); 
} 
関連する問題