Laravelでマスターデータの登録にSeederを利用する
Laravel開発で初期のマスターデータは、Seederで登録・管理するようにしています。 その際に利用するコマンドなどメモとして残していきたいと思います。
[ 目次 ]
はじめに
こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
今回はLaravelのSeeder機能をメモといてまとめていきたいと思います。
■ 環境
ライブラリ | バージョン |
---|---|
PHP | ^7.1.3 |
Laravel | 5.7.* |
既に、\App\Models\Category
モデルが存在していて、その初期データを投入することをイメージして進めていきます。
Seederの作成
makeコマンドにseederのジェネレーターが用意されていますので、そちらを利用します。
$ php artisan make:seeder CategoriesTableSeeder
database/seeds/CategoriesTableSeeder.php
ファイルが生成されます。
デフォルトでは以下のような内容になっています。
<?php
use Illuminate\Database\Seeder;
class CategoriesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}
Seederクラスの修正
以下のように修正しました。
<?php
use Illuminate\Database\Seeder;
use App\Models\Category;
class CategoriesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Category::insert([
[ 'name' => 'カテゴリ1'],
[ 'name' => 'カテゴリ2'],
[ 'name' => 'カテゴリ3'],
[ 'name' => 'カテゴリ4' ],
[ 'name' => 'カテゴリ5' ],
]);
}
}
DatabaseSeeder.phpにCategoriesTableSeederの呼び出しを追加
以下のようにDatabaseSeeder.php
を修正してみます。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(CategoriesTableSeeder::class); // ここを追加しています
}
}
Seederを実行
全てのSeederを実行
$ php artisan db:seed
指定したSeederクラスを実行
$ php artisan db:seed --class=CategoriesTableSeeder
全てのデータを巻き戻して、Seederクラスも実行
$ php artisan migrate:refresh --seed
最後に
Seederという機能の存在を知っていれば利用方法はすぐググればわかります。
makeコマンドなど覚えてはいますが、念のためいつもググって確認していました。
これからは自分のブログを見返していければと思います。