本記事では、Laravelのシーディング(Seeding)機能の使い方をわかりやすく解説していきます。
以下の記事の続きです。まだ読んでいない方はぜひご一読ください!
初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意したので、実際に動かして学ぶとより深く理解できるようになります!
以下の記事を参考にご活用ください。
Laravelのシーディング(Seeding)機能ってなに?
シード(Seed)という英語は、種をまくという意味です。
Laravelのシードとは、テストデータをデーターベースに入れることです。テストデータをまくということですね。
実際のアプリケーション開発では、大量のデータが必要になることも少なくないです。その時に、いちいち手でデータを一つづつ作っていくのは骨が折れます。そこで、Laravelのシーディングという機能を使って一気にデータを入れてしまおうというわけです。
それでは、さっそくシーディングを使っていきましょう!
シーダクラスを作成する
今回は、usersテーブルとarticlesテーブルにテストデータを入れるのをゴールにしましょう。
以下のコマンドでusersテーブルにデータを挿入するシーダクラスを作成します。
php artisan make:seeder UsersTableSeeder
実行すると、database/seeds/UsersTableSeeder.phpが作成されます。
以下のようにrun()メソッドに50人のユーザを作る処理を記述します。
<?php
use Illuminate\Database\Seeder;
use Carbon\Carbon;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for($i=1;$i <= 50;$i++) {
DB::table('users')->insert([
'name' => "テストユーザ{$i}",
'email' => "test{$i}@example.com",
'password' => bcrypt('secret'),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
}
}
}
書き上げたらdatabase/seeds/DatabaseSeeder.phpを開いてrun()メソッドに以下を追加しましょう。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// 追加
$this->call(UsersTableSeeder::class);
}
}
同様にarticlesテーブルへのシーダクラスも作成します。
php artisan make:seeder PostsTableSeeder
database/seeds/ArticlesTableSeeder.phpを開いて以下のようにします。
<?php
use Illuminate\Database\Seeder;
use Carbon\Carbon;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for($i=1;$i <= 50;$i++) {
DB::table('articles')->insert([
'title' => "テストタイトル{$i}",
'content' => "本文{$i}",
'user_id' => mt_rand(1, 50),
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
]);
}
}
}
書き上げたらdatabase/seeds/DatabaseSeeder.phpを開いてrun()メソッドに以下を追加しましょう。
database/seeds/DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
// 追加
$this->call(ArticlesTableSeeder::class);
}
}
シーダを実行する
それでは、先ほど作成したシーダを実行しましょう。まずは先ほど作成したシーだクラスを読み込むために以下のコマンドを実行します。
composer dump-autoload
実行できたら、以下のコマンドでシーダを実行します。
php artisan db:seed
実行できたら、データベース(localhost:8080)をみてみましょう!
以下のような感じでデータが大量に保存されているはずです。
ちなみに、以下のコマンドでデータベースの再生成とシーディングをすることができます。
php artisan migrate:refresh --seed
まとめ
以上、シーディングの使い方でした。シーディングをちゃんと定義しておくと、チームに新しく入ってきた人がすぐに開発に取りかかれるので、チームの生産性が非常に高まります!
ぜひマスターしてください。
次回は認可について解説します!

WINDII

最新記事 by WINDII (全て見る)
- Canvaが最高すぎる。使い方を完全ガイド【チュートリアルあり】 - 2019年5月14日
- 人気急上昇中のLaravelをはじめよう!【徹底解説】 - 2019年4月23日
- Laravelの認可を理解して実装してみよう! - 2019年3月29日
この記事へのコメントはありません。