LoginSignup
14
8

More than 3 years have passed since last update.

LaravelのSeederとFactoryとFaker

Last updated at Posted at 2019-09-14

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を実行

  • たくさんデータが入ってる

laravel-proto____dev_src_github_com_shimabukuromeg_laravel-proto__-_laravel_local_books__laravel_local_localhost_.png

そのほか

14
8
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
14
8