0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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の呼び出しを設定しなければなりません。下記のように書けば、呼び出せるようになります。

``````php: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コマンドを打つ度に生成しています


``````php: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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?