2017-05-26 80 views
0

我在UserPost之間有一對多的關係。我正在使用數據庫播種器和工廠來生成假數據。我想提供與下表相似的數據。在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(); 
}