2017-05-11 60 views
1

我正在使用faker來播種我的數據庫。Laravel faker - 循環添加記錄來模擬版本控制

$factory->define(App\Product::class, function (Faker\Generator $faker) { 

    $campaign = factory(App\Campaign::class)->create(); 
    $size= $faker->randomElement($array = array ('728x90','300x250','315x315', '715x425', '750x650')); 


    return [ 
     'campaign_id' => $campaign->campaign_name, 
     'size' => $size, 
     'product_id' => $campaign->campaign_name."_".$size, 
     'version' => $faker->randomElement($array = array ('1','2','3', '4', '5')), 


    ]; 
}); 

我感興趣的是版本字段。我想要做的是生成一個1到5之間的隨機數,然後在數據庫中輸入該數量的記錄,

因此,一個產品可能是1和5個條目,取決於具有「版本」的數量bene創建。

這可能嗎?

我嘗試了一個簡單的循環返回數組沒有運氣。

回答

0

從你說的話來看,你想爲不同版本的同一產品創建多個條目。模型工廠可用於創建單個模型條目。您可以直接在播種機中使用faker,並實現您的期望。

$campaign = factory(App\Campaign::class)->create(); 
$size= $faker->randomElement($array = array ('728x90','300x250','315x315', '715x425', '750x650')) 

$max_version = $faker->randomElement($array = array ('1','2','3', '4', '5')); 

for ($version=0; $version < $max_version; $version++) { 
    Product::create([ 
     'campaign_id' => $campaign->campaign_name, 
     'size' => $size, 
     'product_id' => $campaign->campaign_name."_".$size, 
     'version' => $version, 
    ]); 
} 
0

最簡單的解決方法是在你測試類創建工廠方法(或性狀),這樣的事情,你就會明白了吧:)

public function createProduct() 
{ 
    $product = factory(Product::class)->create(); 

    foreach(range(0, $product->version) as $i) { 
     factory(Version::class)->create([ 
      'product_id' => $product->id 
     ]); 
    } 

    return $product; 
}