首页 > 解决方案 > 如何多次循环遍历 Laravel 中的工厂...?

问题描述

如何多次循环遍历 Laravel 中的工厂...?

// 文件工厂

$factory->define(File::class, function (Faker $faker) {
    static $imageNumber = 0;
    $imageNumber++;
    $productId = 1;
    return [
        'file_refer_type' => 1,
        'file_refer_id' => $productId,
        'name' => 'Product Name ' . $productId,
        'title' => 'Product Title ' . $productId,
        'image_type' => 1,
        'rank' => $imageNumber,
        'file_type' => 1,
        'file_size' => null,
        'file_url' => config('app.url') . 'images/products/' . $productId . '_' . $imageNumber . '.jpg',
        'thumbnail_url' => config('app.url') .'images/products/' . $productId . '_' . $imageNumber . '-thumb.jpg',
        'file_name' => null,
        'container' => null,
        'folder' => null,
        'file_extension' => null,
        'file_width' => null,
        'file_length' => null,
    ];
});

//FileTableSeeder

public function run()
{
    factory('App\File', 7)->create();
}

如果我想为 2 个产品创建一个循环怎么办...?
此循环仅循环 1 个产品 7 次...

可以像这样更新播种机......但是,这是非常重复的......我能做些什么来重用循环......

编辑:

//预期结果图像...

预期成绩

标签: laravelfactories

解决方案


你问这样的事情吗?

$factory->define(File::class, function (Faker $faker) {
    static $imageNumber = 0;

    $imageNumber++;
    $productId = 1;

    $products = [
        [
        'file_refer_type' => 1,
        'file_refer_id' => $productId,
        'name' => 'Product Name ' . $productId,
        'title' => 'Product Title ' . $productId,
        'image_type' => 1,
        'rank' => $imageNumber,
        'file_type' => 1,
        'file_size' => null,
        'file_url' => config('app.url') . 'images/products/' . $productId . '_' . $imageNumber . '.jpg',
        'thumbnail_url' => config('app.url') .'images/products/' . $productId . '_' . $imageNumber . '-thumb.jpg',
        'file_name' => null,
        'container' => null,
        'folder' => null,
        'file_extension' => null,
        'file_width' => null,
        'file_length' => null,
        ],
        [
        'file_refer_type' => 2,
        'file_refer_id' => $productId,
        'name' => 'Product Name ' . $productId,
        'title' => 'Product Title ' . $productId,
        'image_type' => 2,
        'rank' => $imageNumber,
        'file_type' => 2,
        'file_size' => null,
        'file_url' => config('app.url') . 'images/products/' . $productId . '_' . $imageNumber . '.jpg',
        'thumbnail_url' => config('app.url') .'images/products/' . $productId . '_' . $imageNumber . '-thumb.jpg',
        'file_name' => null,
        'container' => null,
        'folder' => null,
        'file_extension' => null,
        'file_width' => null,
        'file_length' => null,
        ]
    ];


    return $products[$imageNumber%2];
});

推荐阅读