てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

前回は リンク一覧を 表示させるための インデックスページ ( 白紙ページ ) を作成したので
今回は DBを作成して テストデータを 入れていきたいと思います

まずは モデルを作って テーブルを作って テストデータを作って マイグレーションするという 順に進めます


モデルの作成


モデルは コマンドから 雛形を作ります

example-app に 移動してから

php artisan make:model Link

を 叩きます

今回は モデルの 書き換えは ないです


テーブルの作成


テーブルも コマンドから 雛形を作ります

php artisan make:migration create_links_table --create=links

を 叩くdatabase / migrations / {{datetime}}_create_links_table.php に ファイルが生成されるので public function up() の 中身を書き換えます

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('links', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('url')->unique();
            $table->string('description');
            $table->timestamps();
        });
    }

テストデータの作成


テストデータも コマンドから 雛形を作ります

php artisan make:factory LinkFactory --model=Link

を 叩くdatabase / factories / LinkFactory.php に ファイルが生成されるので public function definition() の 中身を書き換えます

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'title' => $this->faker->sentence(),
            'url' => $this->faker->unique()->url(),
            'description' => $this->faker->paragraph(),
        ];
    }

この テストデータを 読み込ませるために database / seeders / DatabaseSeeder.php の function run() を 書き換えます

    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // \App\Models\User::factory(10)->create();

        \App\Models\Link::factory()->count(5)->create();
    }

// \App\Models\User::factory(10)->create(); は ファイルに 元々有った為 残しています
元々に 無ければ この行は 要りません


マイグレーション


マイグレーションも コマンドから 行えます

テストデータを含む マイグレーション行う場合

php artisan migrate --seed

エラーが起きて マイグレーションが行えない場合

フレッシュして テストデータを含む マイグレーション行う場合

php artisan migrate:fresh --seed

フレッシュ は 全テーブルを ドロップしてから マイグレーションを 行うため 全データが 消失します

運用中のでは 行うことのない コマンドだと思うので 注意してください

Related Article

Docker に Laravel 8 の 開発環境を作る

more »

[ はじめて の Laravel ] リンク一覧ページ を 作る No.7 – フラッシュメッセージ

more »

[ はじめて の Laravel ] リンク一覧ページ を 作る No.6

more »