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 を開発する

データベースのマイグレーション

API バージョンのコメント掲示板を開発するために,まず投稿されたコメントデータを格納するための comments テーブルをデータベースに作成します.Laravel ではマイグレーションファイルを実行することでデータベースにテーブルを作成します.次のコマンドでそのマイグレーションファイルを作成します.なお,テーブルは小文字の複数形で作成することに注意してください.

vagrant@ubuntu2204 CommentAPI $ php artisan make:migration create_comments_table --create=comments ⏎

   INFO  Migration [database/migrations/2023_12_16_135311_create_comments_table.php] created successfully.

vagrant@ubuntu2204 CommentAPI $

上のコマンドで database/migrations フォルダにマイグレーションファイルが作成されました.このファイル名には make:migration コマンドを実行した日時の情報が設定されています.なお,up() 関数はマイグレーション時に実行され,down() 関数はロールバック時に実行されます.

database/migrations/yyyy_mm_dd_hhmmss_create_comments_table.php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('comments');
    }
};

comments テーブルには件名 (title) と本文 (body) を格納するための属性を持たせます.次のとおり,up() 関数に記載します.

database/migrations/yyyy_mm_dd_hhmmss_create_comments_table.php (抜粋)
    public function up(): void
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->string('title', 255);
            $table->text('body');
            $table->timestamps();
        });
    }

マイグレーションを実行してテーブルを作成します.

vagrant@ubuntu2204 CommentAPI $ php artisan migrate:status ⏎

   ERROR  Migration table not found.

vagrant@ubuntu2204 CommentAPI $ php artisan migrate ⏎

   INFO  Preparing database.

  Creating migration table ................................... 13ms DONE

   INFO  Running migrations.

  2014_10_12_000000_create_users_table ....................... 19ms DONE
  2014_10_12_100000_create_password_reset_tokens_table ........ 8ms DONE
  2019_08_19_000000_create_failed_jobs_table ................. 37ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ...... 27ms DONE
  2023_12_16_135311_create_comments_table ..................... 9ms DONE

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 $

目次に戻る