Как посеять с моделью, которая имеет отношения - PullRequest
1 голос
/ 04 июня 2019

У меня есть User и Activity модели.User hasMany относится к ActivityActivity принадлежит к только одному User):

В модели пользователя:

public function activities() {
    return $this->hasMany(Activity::class);
}

Я хочу посеять пользователей с их соответствующими действиями.Я попробовал это, но не сработало:

public function run()
{
    factory(App\User::class, 5)->create()->each(function ($user) {
        $user->activities()->saveMany(factory(App\Activity::class, 2)->make());
    });
}

ActivityFactory:

$factory->define(App\Activity::class, function (Faker $faker) {
    return [
        'title'        => $faker->text(50),
        'description'  => $faker->text(200)
    ];
});

Что я делаю не так?

1 Ответ

4 голосов
/ 04 июня 2019

Попробуйте следующим образом:

база данных / фабрики / ActivityFactory.php

$factory->define(App\Activity::class, function (Faker\Generator $faker) {
    return [
        'user_id' => factory('App\User')->create()->id,
        'title'        => $faker->text(50),
        'description'  => $faker->text(200),
    ];
});

база данных / семена / ActivitySeeder.php

public function run()
{
    factory(App\Activity::class, 10)->create();
}

А затем бегите за семенем активности.

php artisan make:seeder ActivitySeeder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...