こんにちは。チャットアプリを作ってます。
前回はテーブルを作りました。今回はそのテーブルにレコードを挿れる事が出来るかどうかを調べる為にseederを使って確かめていきます。
Seederを使いましょう
まずターミナルかなにかで、以下のコマンドを打ちましょう。
php artisan make:seeder PeopleTableSeeder
database/seed/
のなかにPeopleTableSeederが生成されたと思います。
ではPeopleTableSeederに偽レコードを挿れていきましょう。
手順としては
①変数$paramに配列を挿れて
②DB::table('people')->insert($param);でtableに一つずつ挿れていきます。
<?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
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
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