1

我正在使用 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 个条目,具体取决于已创建的“版本”的数量。

这可能吗?

我在返回数组周围尝试了一个简单的 for 循环,但没有成功。

4

2 回答 2

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;
}
于 2017-05-11T11:15:06.017 回答
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,
    ]);
}
于 2017-05-11T11:14:44.857 回答