代码之家  ›  专栏  ›  技术社区  ›  Sagar Gautam

当使用laravel factory创建三个包时,如何为一个包设置列值true?

  •  0
  • Sagar Gautam  · 技术社区  · 7 年前

    我目前在一个项目中工作,我想在packages表中生成假数据。

    我有一个布尔列 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]),
    
        ];
    });
    

    工厂有可能吗?

    欢迎提出任何建议。

    1 回复  |  直到 7 年前
        1
  •  2
  •   brombeer    7 年前

    通过工厂创建模型时,可以设置字段。在播种机中:

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

    应该创建一个包含 featured 字段设置为true。任何其他值将取自上述工厂。

    推荐文章