Defining Laravel foreign keys with Model Factories, One to One & One to Many Relationships without creating unnecessary models

后端 未结 2 1763
被撕碎了的回忆
被撕碎了的回忆 2021-02-13 22:54

Recently I have been trying to seed my database using Laravel seeding through Model Factories and Faker.

For simple schemas, it is just a breeze to have it working :). H

2条回答
  •  太阳男子
    2021-02-13 23:24

    Here is a solution to make relationships that is way better than assigning random Users, especially if you need to send extra information to this model.

    $factory->define(App\Post::class, function (Faker\Generator $faker) {
        $user = factory('App\Models\User')->create(['email' => 'email@test.com',]);
        // do your relationships here (...)
        return [
            'user_id' => $user->id,
            'title'   => $faker->sentence,
            'body'    => $faker->paragraph,
            ];
        }
    

    And I saw another example with the use of anonymous function

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

    Source: https://laracasts.com/series/laravel-from-scratch-2017/episodes/22

提交回复
热议问题