Как l oop через Factory в Laravel несколько раз ...? - PullRequest
0 голосов
/ 06 февраля 2020

Как l oop через Фабрику в Laravel несколько раз ...?

// FileFactory

$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();
}

Что, если я хочу создать al oop для 2 продуктов ...?
Этот l oop только зацикливается на 1 продукт 7 раз ...

Можно было бы обновить сеялку так, как ... Однако, это довольно повторяющееся ... Что я могу сделать для повторного использования l oop ...

РЕДАКТИРОВАТЬ:

// Ожидаемые результаты изображения ...

  • 1-й продукт имеет 7 изображений
  • 2-й продукт имеет 2 изображения

Expected results

1 Ответ

0 голосов
/ 06 февраля 2020

Вы просите что-нибудь подобное?

$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];
});
...