LoginSignup
0
2

More than 5 years have passed since last update.

[Laravel]チャット作成記(未完成):Fakerを使ってSeeder

Posted at

こんにちは。チャットアプリを作ってます。

前回はテーブルを作りました。今回はそのテーブルにレコードを挿れる事が出来るかどうかを調べる為にseederを使って確かめていきます。

Seederを使いましょう

まずターミナルかなにかで、以下のコマンドを打ちましょう。

php artisan make:seeder PeopleTableSeeder

database/seed/
のなかにPeopleTableSeederが生成されたと思います。
ではPeopleTableSeederに偽レコードを挿れていきましょう。
手順としては
①変数$paramに配列を挿れて
②DB::table('people')->insert($param);でtableに一つずつ挿れていきます。

PeopleTableSeeder.php
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
class PeopleTableSeeder extends Seeder
{
    public function run()
    {
        $param = [
          'name' => 'taro',
          'mail' => 'aaa@aaa.jp'
          'age' => 12,
        ];
        DB::table('people')->insert($param);
        $param = [
          'name' => 'ziro',
          'mail' => 'iii@iii.jp'
          'age' => 14,
        ];
        DB::table('people')->insert($param);
        $param = [
          'name' => 'saburo',
          'mail' => 'uuu@uuu.jp'
          'age' => 15,
        ];
        DB::table('people')->insert($param);

    }
}

あとは同じdatabase/seedsの中にあるDatabaseSeeder.phpにseederの呼び出しを設定しなければなりません。下記のように書けば、呼び出せるようになります。

DatabaseSeeder.php
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call(PeopleTableSeeder::class);
    }

あとは

php artisan db:seed

を打てば先程の$paramの中身がテーブルに保存出来ると思います。簡単ですね。

Faker

上記の$paramに一つずつ挿れていく方法ですが、テーブルに挿れたい数が100や1,000となった場合はとてつもない労力が必要になってしまいます。そこでFaker&Factoryを使って楽にテーブルに偽レコードを挿れていきます。
下記ではfakerを使って、偽レコードを10個 artisanコマンドを打つ度に生成しています。

PeopleTableSeeder.php

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;
use Carbon\Carbon;
use App\Person;

class PeopleTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */

    public function run()
    {
        DB::table('people')->delete();
        $faker = Faker::create('ja_JP');
        for($i=0; $i < 10; $i++)
        {
          DB::table('people')->insert([
              'name' => $faker->unique()->userName(),
              'email' => $faker->unique()->email(),
              'password' => bcrypt('1234'),
              'created_at' => Carbon::today(),
          ]);
        }
    }
}

そして最初のDB::table('people')->delete();でコマンドを打つ度にテーブルを初期化しています。
後はartisanコマンドを打てば偽レコードがテーブルに挿入されると思います。これで楽に何個も偽レコードを作れるようになりました。

参考URL

https://qiita.com/yu_eguchi/items/9af6eed45e14505f6ecc
http://www.dn-web64.com/archives/web/factory_faker/
https://github.com/fzaninotto/Faker

0
2
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
2