Laravelでいちいちデータベースに値を入れるのは面倒…だからシーダーを使ってさっとデータベースにデータを入れたいけど、どうやってやればいいんだろう…
こんな疑問を解決します。
- Laravelでシーダーを使ってデータを投入する方法がわかる
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
Laravelでシーダーを使うとどんなことができる?
結論、Laravelでシーダーを使えるようになると、データベースにテストデータをコマンド一発で入れられるので非常に便利です。
例えば、カテゴリーテーブルがあったとします。
category_id | category_name |
1 | Laravel |
2 | PHP |
3 | Ruby |
4 | SQL |
5 | jQuery |
6 | HTML |
7 | CSS |
このようなデータをデータベースに1件ずつ手入力でデータを投入するのは面倒ですよね。
しかし、 Laravelのシーダーの機能を使えば、シーダーファイルを作成した後にコマンド一発でデータを投入することができます。
DB::table('categories')->insert([
[
'category_id' => 1,
'category_name' => 'Laravel',
],
[
'category_id' => 2,
'category_name' => 'PHP',
],
[
'category_id' => 3,
'category_name' => 'Ruby',
],
]);
php artisan db:seed --class=categorySeeder
Laravelでシーダーを使う手順
このような手順になっています。
シーダーファイルを作成する
まずはシーダーファイルを作成しましょう。
事前にcateogriesテーブルを作成し、以下のような構造になっています。
シーダーファイルの作成
php artisan make:seeder categorySeeder
すると、database>seedersのファイル下にcategorySeeder.phpファイルが作成される。
シーダーファイルを編集する
作成されたシーダーファイルでデータベースに投入したいデータを編集します。
試しにcategoriesテーブルに、以下のように3つデーを入れてみます。
category_id | user_id | category_name |
1 | 1 | Laravel |
2 | 1 | PHP |
3 | 1 | Ruby |
シーダーファイルを編集します。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;// 追加
class categorySeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('categories')->insert([
[
'category_id' => 1,
'user_id' => 1,
'category_name' => 'Laravel',
],
[
'category_id' => 2,
'user_id' => 1,
'category_name' => 'PHP',
],
[
'category_id' => 3,
'user_id' => 1,
'category_name' => 'Ruby',
],
]);
}
}
シーダーを実行する
編集が終わったら以下を実行。
php artisan db:seed --class=categorySeeder
これでcategoriesテーブルに任意のデータを投入できました。
DB::を使うので、冒頭にuse Illuminate\Support\Facades\DB;を追加することをお忘れなく。
DB::table(‘テーブル名’)->insert()でデータを投入できます。
ちなみにNULLを許可していないカラムはシーダーファイルに書く必要がありますが、NULL許可しているカラムは書かなくてもOKです。
created_atやupdated_atのカラムはテーブル作成時のデフォルトでNULL許可なので、記述しなくてもOKなんですね。
【まとめ】Laravelでシーダーをマスターしよう
Laravelでシーダーを使えるようになると、テストデータを投入するのが便利になります。
実務では、テーブル数も増えるしテストしたいデータも多くなるので、シーダーを使いこなして開発の効率アップを目指しましょう。
他にもLaravelに役立つ記事をブログで書いているのでぜひ参考にしてくださいね!
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
コメント