シーダーとは?
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,
]);