如何使用Laravel中的fakers为相关模型生成/创建多个记录?

问题描述 投票:0回答:1

我想生成与一个用户关联的10个产品。我如何使用Laravel中的fakers做到这一点?这是我的模型:

用户型号:

    class User 
    {
        public function product()
        {
            return $this->hasMany('App\Product');
        }
    }

产品型号:

    class Product
    {
        public function user()
        {
            return $this->belongsTo('App\User');
        }
    }
laravel
1个回答
3
投票

我会使用php artisan make:factory ProductFactory创建一个ProductFactory,这应该创建一个类如下的类:

$factory->define(Product::class, function (Faker $faker) {
    return [
        //
    ];
});

在要返回的数组中,您可以分配属性,例如:

$factory->define(Product::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'description' => $faker->text,
    ];
});

然后,要创建分配给该用户的多个产品,您可以执行此操作。

//assuming you have the user instance in the $user variable

$user->products()->saveMany(
    factory(Product::class)->times(10)->make()
);

这将使用工厂模拟10个产品并使用User模型上定义的关系创建它们。

© www.soinside.com 2019 - 2024. All rights reserved.