最初に関連テーブルの全データを取得しておいて、
ダミーデータ作成時に、取得しておいた全データからランダムにデータを取得して利用する。
$users = App\User::select('id','name')->get(); $factory->define(App\Post::class, function ($faker) use ($users) { $user = $users->random(); return [ 'user_id' => $user->id, 'user_name' => $user->name, 'title' => $faker->sentence, 'body' => $faker->paragraph, 'post_datetime' => $faker->dateTimeThisMonth ]; });
・以下、ダメなパターン
1つのダミーデータ作るためにUser全検索が毎回されるのは無駄で時間がかかるのでボツ
$factory->define(App\Post::class, function ($faker) { return [ 'user_id' => App\User::all(['id'])->random(), 'user_name' => App\User::all(['name'])->random(), 'title' => $faker->sentence, 'body' => $faker->paragraph ]; });