Seederの使い方メモ
テーブルを作成したのは良いが、データが何も無い状態だと、何も試すことができません。 そこで、ダミーのレコードを用意する為にシーディングという機能を利用します。
以下を実行するとdatabase/seed/にシーディング用のファイルが作成されます。
php artisan make:seeder HogeTableSeeder
作成されたseederファイルは以下です。 runメソッド内にレコードを作成する処理を書いていきます。
<?php
use Illuminate\Database\Seeder;
class HogeTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}
seedファイルにレコードを追加します。
class HogeTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $param = [
        'name' => 'taro',
        'age' => '20',
        'sex' => 'male'
        ];
        DB::table('persona') -> insert($param);
        $param = [
        'name' => 'jiro',
        'age' => '30',
        'sex' => 'male'
        ];
        DB::table('persona') -> insert($param);
    }
}
最後に/database/seeds/DatabaseSeeder.phpにseedファイルを登録します。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(HogeTableSeeder::class);
    }
}
実行します。
php artisan db:seed
テーブルにレコードが追加されます。
上記のコマンド実行時にTarget class [XXXXXXTableSeeder] does not exist.のエラーが発生する場合があります。
 その場合はcomposer dump-autoloadを実行することで解消するみたいです。
Fackerでダミーデータを利用する
seederファイルを利用して、ダミーデータを登録することができましたが、 一つずつ定義していくのはなかなか面倒です。
Laravelには標準でダミー生成用のライブラリFackerが入っています。 もし入ってなければ以下で追加します。
composer require fzaninotto/faker
Fackerの使い方
Fackerで設定できる内容はこちらの記事が参考になりました。 もしくはライブリのgithubページが参考になります。
① Modelを作成
php artisan make:model Hoge
モデルの定義はこんな感じです。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Hoge extends Model
{
  protected $table = 'hoge';
  protected $guarded = array('id');
  public $timestamps = true;
  protected $fillable = [
    'name', 'email', 'age', 'thumbnail'
  ];
}
②Factory クラスを作成
直接seederファイルに定義しても良いが、データの生成処理はFactoryクラスを利用する。
以下でFactoryクラスを作成。
php artisan make:factory HogeFactory
database/factories/HogeFactory.phpが作成される。
FactoryクラスにFakerを利用したダミーデータの生成処理を追加していく。
<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use Faker\Generator as Faker;
$factory->define(App\Hoge::class, function (Faker $faker) {
    return [
        'name' => $faker ->name,
        'email' => $faker ->email,
        'age' => $faker ->numberBetween($min = 20, $max = 60),
        'thumbnail' => $faker -> imageUrl()
    ];
});
③seederファイルでFactoryクラスを実行
<?php
use Illuminate\Database\Seeder;
class HogeTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('persona')->delete();
        //ダミーデータを10個作る
        factory(App\Hoge::class, 10)->create();
    }
}
Fakerのダミーデータを日本語化する
ダミーデータを日本語かするためには以下の設定を変更します。 config/app.phpの以下の設定を変更します。
'faker_locale' => 'ja_JP',