2017-05-11 37 views
1

내 DB를 시드하기 위해 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')), 


    ]; 
}); 

내가 관심있는 비트는 버전 필드입니다. 내가 뭘하고 싶은 일, 5 다음 데이터베이스에있는 레코드의 번호를 입력 사이의 임의의 숫자,

을 생성하므로 제품은 1되었습니다 수 5 개 항목이 '버전'의 수에 따라 만든다.

이것이 가능합니까?

나는 행운과 반환 배열 주위에 간단한 루프를 시도했다.

답변

0

당신이 말한 것부터, 같은 버전의 제품에 대해 여러 항목을 만들고 싶습니다. Model 팩토리는 단일 모델 항목을 만드는 데 사용할 수 있습니다. 파종기를 직접 파종기에서 사용하고 기대하는 바를 달성 할 수 있습니다. 가장 간단한 솔루션

$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; 
} 
를 얻을 수 있습니다