Laravel 10 入門トップページ


目次

  1. プロジェクトを作成する
  2. データベースファイルを作成する
  3. Visual Studio Code を設定する
  4. .env を編集して初期設定する
  5. タイムゾーンと言語を設定する
  6. Webサーバを起動して終了する
  7. マイグレーションファイルを生成する
  8. テスト用データを設定する
  9. モデルを作成する
  10. コントローラを作成する
  11. ルートを定義する
  12. データベースからデータを取り出す
  13. トップページにリンクを設置する
  14. ビューを使ってレコードを表示する
  15. コメントを個別に表示するページを作成する
  16. コメント投稿機能を実装する
  17. 投稿内容を検証する
  18. 投稿内容を編集する
  19. 投稿コメントを削除する
  20. テストの自動化を実現する
  21. テストカバレッジを計測する
  22. 複数のLinuxコマンドを実行し,履歴からも実行する
  23. ビューをレイアウト化する
  24. Bootstrap を導入する
  25. SQLite を操作する
  26. フェイカでシーダを拡張する
  27. ページネーションを作る
  28. シーダに登録日時と更新日時を追加する
  29. 一覧表示を更新日時の降順にする
  30. フラッシュメッセージを表示する
  31. スタイルシートでデザインを整える

Laravel によるコメント掲示板の開発

テスト用データを設定する

ここでは,シーダを用いてデータベースにテスト用データを投入します.まず,次のコマンドでシーダファイルを生成します.

vagrant@ubuntu2204 comment_app $ php artisan make:seeder CommentsTableSeeder ⏎

   INFO  Seeder [database/seeders/CommentsTableSeeder.php] created successfully.

vagrant@ubuntu2204 comment_app $

上のコマンドによって database/seed/ ディレクトリに CommentsTableSeeder.php ファイルが生成されました.ここの手順と同様に,リモート (ubuntu) のファイルをローカルに同期してください.その後,このファイルにテスト用データを記載するとともに,database/seeds/DatabaseSeeder.php には CommentsTableSeeder.php を実行するためのコードを記載します.なお,特に Windows の秀丸エディタなどのエディタを使っている時には,保存するときの文字コードが Unicode (UTF-8) になっているかを確認しよう.秀丸エディタでは特に指定しなければ Shift-JIS で保存されるため,実行時にブラウザで文字化けが発生することになります.Visual Studio Code ではデフォルトで UTF-8 になっている(Visual Studio Code の右下のステータスバーに表示されている)です.

database/seeders/CommentsTableSeeder.php
<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class CommentsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        // 一旦中身を削除する
        DB::table('comments')->delete();

        DB::table('comments')->insert([
            'title' => '最初のコメント',
            'body' => '最初のコメントです!'
        ]);

        DB::table('comments')->insert([
            'title' => '2つ目',
            'body' => '2つ目のコメントです!'
        ]);

        DB::table('comments')->insert([
            'title' => '<三個目>のコメント',
            'body' => 'シーダによってテストデータを設定します.'
        ]);
    }
}
database/seeders/DatabaseSeeder.php
<?php

namespace Database\Seeders;

// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

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

        // \App\Models\User::factory()->create([
        //     'name' => 'Test User',
        //     'email' => 'test@example.com',
        // ]);

        $this->call(CommentsTableSeeder::class);
    }
}

テストデータをデータベースに投入するには次のように php artisan db:seed コマンドを実行します.状況に応じて,マイグレーションの状態を確認してから実行しても良いでしょう.

vagrant@ubuntu2204 comment_app $ php artisan migrate:status ⏎

  Migration name ........................................ Batch / Status
  2014_10_12_000000_create_users_table ......................... [1] Ran
  2014_10_12_100000_create_password_reset_tokens_table ......... [1] Ran
  2019_08_19_000000_create_failed_jobs_table ................... [1] Ran
  2019_12_14_000001_create_personal_access_tokens_table ........ [1] Ran
  2023_10_15_115031_create_comments_table ...................... [1] Ran

vagrant@ubuntu2204 comment_app $ php artisan db:seed ⏎

   INFO  Seeding database.

  Database\Seeders\CommentsTableSeeder ......................... RUNNING
  Database\Seeders\CommentsTableSeeder ................... 31.38 ms DONE

vagrant@ubuntu2204 comment_app $

目次に戻る