-
リレーションシップのあるモデルの作成: まず、リレーションシップを持つモデルを作成します。例えば、UserとPostモデルがあり、UserモデルはPostモデルと1対多のリレーションシップを持つとします。
-
シーディングクラスの作成: 次に、シーディングクラスを作成します。Laravelのシーディングクラスは、データベースに初期データを挿入するための便利なメソッドを提供します。例えば、Userテーブルをシードする場合は、UserTableSeederクラスを作成します。
-
シーディングデータの作成: シーディングデータを作成します。UserTableSeederのrunメソッド内で、Userモデルのインスタンスを作成し、関連するPostモデルも作成します。例えば、以下のようなコードを使用してデータを作成できます。
public function run()
{
$users = factory(User::class, 1000)->create();
foreach ($users as $user) {
$posts = factory(Post::class, rand(1, 5))->create([
'user_id' => $user->id,
]);
// 他のリレーションシップのデータの作成も可能
}
}
上記の例では、Userモデルを1000件作成し、各ユーザーに1から5件の関連するPostモデルを作成しています。
- シーディングの実行: 最後に、シーディングを実行します。ターミナルで以下のコマンドを実行します。
php artisan db:seed --class=UserTableSeeder
これにより、Userテーブルと関連するPostテーブルにデータが挿入されます。
以上が、Laravelのリレーションシップを使用したシーディングの方法です。これにより、関連するデータを持つテーブルの初期データを簡単に作成できます。