はじめに
Laravelには、データベースに初期データを追加するための便利な機能であるSeeder
が組み込まれており、データベースの初期状態を簡単に設定することができます。
Seederとは
Seeder
は、Laravelのデータベース初期化機能の一部であり、データベースに初期データを追加するためのクラスです。Seederを使用することで、開発環境やテスト環境のデータベースを簡単に初期化し、必要な初期データを追加することができます。
Seederを作成する
Laravelでは、artisanコマンドを使用してSeederを作成することができます。以下のコマンドを実行すると、新しいSeederクラスが生成されます。
php artisan make:seeder UsersTableSeeder
上記の例では、UsersTableSeederという名前のSeederクラス
が作成されます。Seederクラスはdatabase/seeders
ディレクトリに作成されます。
作成されたUsersTableSeeder.phpファイルの初期状態は下記のようになっています。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class UsersTableSeede extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
runメソッド
がSeederを実行した時に処理されるメソッドです。
処理を記述する
今回は、Usersテーブルとモデルを用意して初期データを登録してみます。
class UsersTableSeede extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
User::create([
'id' => 1,
'name' => 'tarou',
'email' => 'hello@example.com',
]);
User::create([
'id' => 2,
'name' => 'yamada',
'email' => 'world@example.com',
]);
}
DatabaseSeederを編集する
作成したSeederファイルは、DatabaseSeeder.php
から呼び出すようにして使用します。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
}
}
作成したSeederクラスをcall()メソッド
に渡します。
実行する
下記のコマンドを実行するとテーブルにデータが登録されます。
php artisan db:seed
DatabaseSeeder.phpに記述しなくても、特定のSeederだけ実行することができるコマンドもあります。
php artisan db:seed --class=UserTableSeeder