ホーム » シーダー(seeder)について

シーダー(seeder)について

シーダーとは?

Laravel のシーダーとは、Laravelを通して、データベースにデータを挿入するための機能です。
シーダーを利用すると、チーム開発などをする場合に、初期データを登録するのが楽になります。
シーダーを利用しない場合は、初期データをSQLファイルなどで用意するひつようが出来きます。
または、手動でアカウント登録からデータ登録まで手順通りに行うなどが必要になります。

シーダークラスの定義

下記コマンドを実行してシーダークラスを作成します。
このコマンドは、あくまでもファイルを作成するだけで、シーダーは実行されません。

php artisan make:seeder UserSeeder

・「UserSeeder」の部分がシーダー名になります。
・make:seeder artisanコマンドを実行しています。
・database/seedersディレクトリにファイルが配置されます。
・runメソッドが初期であるので、こちらに記述していきます。

シーダークラスの作成・修正

// クエリビルダを利用した場合
DB::table('users')->insert([
    'name' => Str::random(10),
    'email' => Str::random(10).'@gmail.com',
    'password' => Hash::make('password'),
]);

// eloquentを利用した場合
// Hashは、ハッシュ値でパスワードを設定します。パスワードはpasswordで設定されます。DB上ではハッシュ値で保存されます。
User::insert([
    'name' => Str::random(10),
    'email' => Str::random(10).'@gmail.com',
    'password' => Hash::make('password'),
]);

シーダーの実行

// こちらは、Database\Seeders\DatabaseSeederクラスを呼び出します。
sail php artisan db:seed
// こちらは、Database\Seeders\UserSeederクラスを呼び出します。(クラス指定でのseeder実行です)
sail php artisan db:seed --class=UserSeeder

複数シーダーを呼び出す

複数シーダーを呼び出したい場合は、DatabaseSeederクラスに下記の様な形で呼び出します。
下記の例では、UserSeederとBookSeederクラスを呼び出してます。

$this->call([
    UserSeeder::class,
    BookSeeder::class,
]);