0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelのシーディング【個人的なお勉強アウトプット】

Last updated at Posted at 2022-04-06

参考図書

シーディングとは

テーブルの用意はマイグレーションでできる。
だけど、レコードは空。初期状態でいくつかダミーレコードを用意しておけると便利。
そのための機能がシーディング

シーディングの手順

  • 1.シーダーファイルを作成
  • 2.シーダーファイルを編集
  • 3.シーディングを実行

1.シーダーファイルを作成

コマンドで作成できる。
php artisan make::seeder シーダーファイル名
database/seeds/フォルダ内に作成される。

2.シーダーファイルを編集

上記コマンドでシーダーファイルを作成されると初期状態で以下のスクリプトが記述されている。

database/seeds/PeopleTableSeeder.php
use Illuminate\Database\Seeder;

class PeopleTableSeeder extends Seeder{
public function run(){

}
}

シーディング処理はSeederクラスを継承したクラスとして定義する。
runメソッド内にレコード作成するための処理を用意する。

database/seeds/PeopleTableSeeder.php
use Illuminate\Support\Facades\DB;

public function run(){
$param = [
'name' => 'taro',
'mail' => 'taro@yamada.jp',
'age' => 12,
];
DB::table('people')->insert($param);

$param = [
'name' => 'hanako',
'mail' => 'hanako@yamada.jp',
'age' => 34,
];
DB::table('people')->insert($param);
}

シーダーファイルの登録

作成したファイルが実行されるように、DatabaseSeederに登録をする必要がある。
プロジェクトにはデフォルトでDatabaseSeeder.phpというファイルが用意されている。これがシーディングのコマンドで実行されるスクリプト。
なので、このファイルのなかにPeopleTableSeederを呼び出す処理を用意しておく。

database/seeds/DatabaseSeeder.php
use Illuminate\Database\``
class DatabaseSeeder extends Seeder{
public function run(){
$this->call(PeopleTableSeeder::class);
}
}

実行するシーダークラスのclassプロパティを引数にしてcallというメソッドで呼び出す。
これはSeederクラスにあるメソッドで、これにより指定したクラスのrunメソッドが呼び出されシーディング処理が実行されるようになる。

3.シーディングを実行

php artisan db:seed

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?