Laravel 10 入門トップページ


目次

  1. API とプロジェクトの概要
  2. プロジェクトの作成と初期設定
  3. データベースのマイグレーション
  4. シーダによるコメントデータの登録
  5. モデルの生成
  6. リソースの生成
  7. GETメソッドを利用した個別コメント取得のAPI作成
  8. 日本語文字列の表示と日時の調整
  9. GETメソッドを利用したコメント一覧取得のAPI作成
  10. データのラップ
  11. POSTメソッドを利用したコメントの新規投稿APIの作成
  12. PUTメソッドを利用したコメント更新APIの作成
  13. DELETEメソッドを利用したコメント削除APIの作成
  14. シーダの拡張
  15. ページネーションの実装
  16. 個別コメントをコントローラで取得
  17. Postman の利用
  18. ユーザ情報を登録する
  19. Sanctum によるユーザ認証
  20. ログインとトークン
  21. コメントとユーザのリレーションシップ
  22. 新規投稿時にユーザIDを記録する
  23. コメントからユーザ名を表示するリレーションシップ
  24. ユーザからコメント一覧を取得するリレーションシップ
  25. 更新と削除の権限設定
  26. 発行済みトークンの取得
  27. トークンの有効期限
  28. レート制限
  29. 閲覧権限の緩和

Laravel で API を開発する

シーダによるコメントデータの登録

動作確認用として少数のコメントデータをデータベースに登録する作業を行います.Laravel ではシーダを使って登録する方法があります.まずは,シーダを次のコマンドで生成します.

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

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

vagrant@ubuntu2204 CommentAPI $

上のコマンドで次のような雛形が生成されました.

database/seeders/CommentsTableSeeder.php
<?php

namespace Database\Seeders;

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

class CommentsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        //
    }
}

このファイルを修正して投入するコメントデータを設定します.

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' => '最初のコメントです!',
            'created_at' => '2023-10-02 10:10:10',
            'updated_at' => '2023-10-02 10:10:10'
        ]);
        DB::table('comments')->insert([
            'title' => '2つ目',
            'body' => '2つ目のコメントです!',
            'created_at' => '2023-10-02 10:20:10',
            'updated_at' => '2023-10-02 10:20:10'
        ]);
        DB::table('comments')->insert([
            'title' => '<三個目>のコメント',
            'body' => 'シーダによってテストデータを設定します.',
            'created_at' => '2023-10-02 10:30:10',
            'updated_at' => '2023-10-02 10:30:10'
        ]);
    }
}

さらに DatabaseSeeder.php も編集して,上の CommentsTableSeeder クラスが実行されるようにします.

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);
    }
}

データベースのマイグレーションが実行されていることを確認してからシーダを実行してデータを投入します.

vagrant@ubuntu2204 CommentAPI $ 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_12_16_135311_create_comments_table ...................... [1] Ran

vagrant@ubuntu2204 CommentAPI $ php artisan db:seed ⏎

   INFO  Seeding database.

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

vagrant@ubuntu2204 CommentAPI $

目次に戻る