【问题标题】:Laravel factory / seeder creating double records specifiedLaravel 工厂/播种机创建指定的双重记录
【发布时间】:2019-05-11 22:19:59
【问题描述】:

我有UsersUserProfiles

所有Users 都只有一个UserProfile

我的 UserTableSeeder 类正在创建 25 条记录,并为每条记录输出一个 UserProfile

由于某种原因,Users 上的记录增加了一倍,UserProfile 上指定的数量增加了 50 个 Users 被插入,25 个 UserProfiles 被插入。

种子:

public function run()
    {
        factory(App\User::class, 25)->create()->each(function ($user) {
            $user->profile()->save(factory(App\UserProfile::class)->make());
        });
    }

用户类别:

class User extends Model
{

    public function profile() {
        return $this->hasOne('App\UserProfile');
    }

}

用户工厂:

$factory->define(User::class, function (Faker $faker) {
    return [
        'username' => $faker->userName(),
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => Str::random(10),
    ];
});

用户配置文件工厂:

$factory->define(UserProfile::class, function (Faker $faker) {
    return [
        'user_id' => factory('App\User'::class)->create()->id,
        'bio' => $faker->paragraph()
    ];
});

用户档案模型:

class UserProfile extends Model
{
    public function user() {
        return $this->belongsTo('App\User');
    }
}

我的预期输出是 25 个用户和 25 个用户表,因为所有用户都有个人资料

【问题讨论】:

    标签: laravel factory seeding


    【解决方案1】:

    更改此代码

    $factory->define(UserProfile::class, function (Faker $faker) {
        return [
            'user_id' => factory('App\User'::class)->create()->id,
            'bio' => $faker->paragraph()
        ];
    });
    

    $factory->define(UserProfile::class, function (Faker $faker) {
        return [
            'bio' => $faker->paragraph()
        ];
    });
    

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 2017-08-02
      • 2015-09-16
      • 2021-01-26
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2020-01-29
      • 2017-04-07
      相关资源
      最近更新 更多