Laravel | いいね!管理用のモデル作成

Laravelでいいね!のデータ管理用のマイグレーションファイルとモデル作成のメモ。

マイグレーションファイルとモデルの作成

BlogLikeモデルとblog_likesテーブル作成のためのマイグレーションファイルを同時に作成します。

% sail artisan make:model BlogLike -m
   INFO  Model [app/Models/BlogLike.php] created successfully.  
   INFO  Migration [database/migrations/2023_10_30_155302_create_blog_likes_table.php] created successfully.

マイグレーションファイルのupメソッド編集

作成したマイグレーションファイルのupメソッドを編集し必要なカラム情報を追加します。

<?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()
    {
        Schema::create('blog_likes', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('blog_id');
            $table->string('ip');
            $table->string('ua')->nullable();
            $table->timestamps();
        });
    }


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

マイグレーションの実行

マイグレーションファイルの編集後、マイグレーションを実行します。

% sail artisan migrate
   INFO  Running migrations.  
  2023_10_30_155302_create_blog_likes_table ....... 593ms DONE
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- ホスト: mysql
-- 生成日時: 2023 年 10 月 31 日 00:31
-- サーバのバージョン: 8.0.32
-- PHP のバージョン: 8.0.19

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";

--
-- データベース: `my_app`
--

-- --------------------------------------------------------

--
-- テーブルの構造 `blog_likes`
--

CREATE TABLE `blog_likes` (
  `id` bigint UNSIGNED NOT NULL,
  `blog_id` bigint UNSIGNED NOT NULL,
  `ip` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `ua` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- ダンプしたテーブルのインデックス
--

--
-- テーブルのインデックス `blog_likes`
--
ALTER TABLE `blog_likes`
  ADD PRIMARY KEY (`id`);

--
-- ダンプしたテーブルの AUTO_INCREMENT
--

--
-- テーブルの AUTO_INCREMENT `blog_likes`
--
ALTER TABLE `blog_likes`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;

動作環境情報

"macOS Sonoma" 14.0
"Docker Desktop" 4.17.0
"Laravel Framework" 10.11.0
"Laravel Sail"

コメント

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