Как установить значение столбца true для одного пакета, когда три пакета созданы с помощью фабрики laravel?

В настоящее время я работаю над проектом и хочу создать поддельные данные в таблице пакетов.

У меня есть логический столбец featured, чтобы указать, показан ли пакет или нет. При создании поддельных данных мне нужен только один рекомендуемый пакет на каждые три строки пакета.

Вот мой код,

<?php

use Faker\Generator as Faker;

use App\Paragliding\Models\Package\Package;
use Intervention\Image\Facades\Image;

$factory->define(Package::class, function (Faker $faker) {
    return [
        'name' => $faker->text(15),
        'created_by' => App\User::where('role_id',3)->first()->id,
        'feature_image' => function()  use($faker){
            $name = $faker->text(10);
            Image::canvas(1024,768,$faker->hexcolor())->save(config('image.package_feature_path').$name.'jpg');
            return $name.'jpg';
        },
        'images' => function() use($faker){
            $images = array();
            for($i=0;$i<5;$i++){
                $name = $faker->text(10);
                Image::canvas(1024,768,$faker->hexcolor())->save(config('image.package_gallery_path').$name.'jpg');
                $images[] = $name.'jpg';
            }
            return json_encode($images);
        },
        'description' => $faker->realText(150),
        'featured' => $faker->randomElement([0,1]),

    ];
});

Можно ли с завода?

Любое предложение приветствуется.


person Sagar Gautam    schedule 06.12.2018    source источник


Ответы (1)


Вы можете установить поля при создании моделей через фабрику. В вашем сеялке:

factory(Package::class)->create([
  'featured' => true
]);

должен создать один пакет с полем featured, установленным в значение true. Любые другие значения будут взяты из вашей вышеуказанной фабрики.

person brombeer    schedule 06.12.2018
comment
Спасибо за ваш ответ. Я хочу, чтобы мы создали 30 пакетов, затем 10 популярных и 20 нерекомендованных. можем ли мы этого добиться? - person Sagar Gautam; 06.12.2018
comment
Вы можете указать своему сеялке создать 20 нерекомендованных пакетов, просто используя factory(Package::class, 20)->create(); (будут приняты заводские настройки по умолчанию) и factory(Package::class, 10)->create('featured' => true); для создания 10 рекомендуемых пакетов. Подробнее о сидерах на laravel.com/docs/5.7/seeding. - person brombeer; 06.12.2018
comment
спасибо посмотрю - person Sagar Gautam; 06.12.2018