学習の備忘録です。タスク管理アプリを作っています。
今回は、スタンプ獲得機能を実装するにあたり、「スタンプの履歴テーブル」を追加した方が良さそうだと判断しました。
そう判断した経緯(スタンプ獲得の仕様設計)については、以下の記事で解説しています。
毎回いちいちマイグレーションのコマンド検索するのめんどくさくなったので、自分で振り返る用に一連の操作手順を記録します。
大した初期データも入ってなかったので、全データ消去してマイグレーションをやり直す「migrate:refresh」でテーブルを作り直しました。
本記事は個人の学習記録です。内容の正確性を保証するものではありませんので、あらかじめご了承ください。
コマンドプロンプトで該当プロジェクトに移動
まずはコマンドプロンプトを起動し、cdでマイグレーションを作成したいプロジェクトまで移動します。
VScodeとかのエディターは大概ターミナルがあるので、そこで操作するならcdでの移動は必要ありません。

マイグレーション作成
以下の{テーブル名}のところにテーブル名を記述します。
テーブル名は複数形で書きましょう。(例: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




コメント