PHPフレームワークLaravel Webアプリケーション開発 の5章を読んで、LaravelのSeederとFactoryとFakerについてわかったこと
わかったこと
- シーダーはテストデータや初期データをデータベースに登録する仕組み
- シーダーを作成したら
database/seeds/DatabaseSeeder.php
に登録する - Fakerはダミーデータを生成する仕組み(シーダーで登録するデータの中身)
- Factoryはデータを登録する処理の内容を定義するクラス。fatoryがあったら、シーダー側では登録したいデーターのfactoryを呼び出すだけで良い👌 (factoryがなかったら、登録する処理をシーダーに直接かく)
Factory
-
php artisan mak:factory Model\Factory
でFactoryの雛形を作成
database/factories/ModelFactory.php
<?php
use Faker\Generator as Faker;
$factory->define(App\Book::class, function (Faker $faker) {
$now = \Carbon\Carbon::now();
return [
'isbn' => $faker->isbn13,
'published_date' => $faker->date($format = 'Y-m-d', $max = 'now'),
'price' => $faker->randomNumber(4),
'created_at' =>$now,
'updated_at' => $now
];
});
Seeder
-
php artisan make:seeder BooksTableSeeder
でSeederの雛形作成
database/seeds/BooksTableSeeder.php
<?php
use Illuminate\Database\Seeder;
class BooksTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(\App\Book::class, 50)->create();
}
}
- シーダーを登録
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(AuthorsTableSeeder::class);
$this->call(BookdetailsTableSeeder::class);
$this->call(BooksTableSeeder::class);
}
}
-
php artisan db:seed
でSeederを実行 -
たくさんデータが入ってる