【Laravel】スタンプの履歴テーブルを追加するためのマイグレーション作成とリフレッシュ

マイグレーション作成とリフレッシュの備忘録アイキャッチ プログラミング
スポンサーリンク

学習の備忘録です。タスク管理アプリを作っています。

今回は、スタンプ獲得機能を実装するにあたり、「スタンプの履歴テーブル」を追加した方が良さそうだと判断しました。

そう判断した経緯(スタンプ獲得の仕様設計)については、以下の記事で解説しています。

毎回いちいちマイグレーションのコマンド検索するのめんどくさくなったので、自分で振り返る用に一連の操作手順を記録します。

大した初期データも入ってなかったので、全データ消去してマイグレーションをやり直す「migrate:refresh」でテーブルを作り直しました。

本記事は個人の学習記録です。内容の正確性を保証するものではありませんので、あらかじめご了承ください。

コマンドプロンプトで該当プロジェクトに移動

まずはコマンドプロンプトを起動し、cdでマイグレーションを作成したいプロジェクトまで移動します。

VScodeとかのエディターは大概ターミナルがあるので、そこで操作するならcdでの移動は必要ありません。

VScodeでのコマンドを打つ場所

マイグレーション作成

以下の{テーブル名}のところにテーブル名を記述します。

テーブル名は複数形で書きましょう。(例:stamp_histories)

php artisan make:migration create_{テーブル名}_table

Laravel Sail(Docker)を使っている場合

私のようにDockerでLaravelプロジェクトを作っている人は、php artisan ...ではエラーになる場合があります。

そういう場合は以下のように書きます。

./vendor/bin/sail artisan make:migration create_{テーブル名}_table

Failed to open stream: Permission denied(パーミッションエラー)が発生した場合の対処法は以下の記事にまとめてあります。参考になれば幸いです。

Laravel全般で起こりうるエラーですが、この記事では特にLaravel Sail(Docker)環境向けの対処法を解説しています。

マイグレーションファイルの編集(カラム定義)

生成されたファイルのupメソッドを編集します。

私の場合は、ユーザーIDと獲得日、獲得演出済かどうかを管理できるようにしました。

    public function up(): void
    {
        Schema::create('stamp_histories', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
            $table->date('stamp_date');
            $table->boolean('is_read')->default(0);
            $table->timestamps();
        });
    }

データベースのリフレッシュ

マイグレーションの中身を書き終わったら以下のコマンドを実行します。

今までデータベースに登録したデータが全部消えるので注意!

php artisan migrate:refresh

Laravel Sail(Docker)を使っている場合

以下のコマンドを実行します。

./vendor/bin/sail artisan migrate:refresh

コメント

タイトルとURLをコピーしました