【Laravel】Migrationのときの型をまとめて解説

laravelアイキャッチ Laravel

こんにちは、かつコーチです。

LaravelでMigrationするときに型を指定すると思いますが、

よく使うものは大体把握できていると思います。

では、全体としてはどのようなものがあるのでしょうか?

今回はその型についてまとめてみます。

Laravelのマイグレーションでは、テーブルのカラムを定義するために様々な型を使用します。

これらの型は、MySQLやPostgreSQL、SQLite、SQL Serverなどのデータベースと互換性があります。

以下は、よく使う型から、あまり使われない型までをまとめ、詳細な説明を付け加えたものです。

型一覧

1. string

  • 説明: 可変長の文字列。通常、最大255文字まで。
  • : $table->string('name', 100); // 長さ100の文字列
  • 使用頻度: 高い(名前やタイトル、短い説明など)

2. text

  • 説明: 長い文字列。通常は255文字を超えるテキストを格納するのに使用。
  • : $table->text('description');
  • 使用頻度: 高い(説明文やコンテンツなど)

3. integer

  • 説明: 整数値を格納するカラム。符号付き(-2,147,483,648 から 2,147,483,647)か符号なし(0 から 4,294,967,295)。
  • : $table->integer('age');
  • 使用頻度: 高い(IDやカウンタ、年齢など)

4. bigInteger

  • 説明: より大きな範囲の整数。符号付き(-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807)。
  • : $table->bigInteger('views');
  • 使用頻度: 高い(大規模な数値を扱う場合)

5. unsignedInteger / unsignedBigInteger

  • 説明: 符号なし整数。負の値を持たない。
  • : $table->unsignedInteger('user_id');
  • 使用頻度: 中程度(IDなどで正の値のみを扱う場合)

6. boolean

  • 説明: true または false を格納するカラム。
  • : $table->boolean('is_active');
  • 使用頻度: 高い(フラグやトグル状態など)

7. enum

  • 説明: 設定された選択肢の中から1つの値を選ぶカラム。データベースで列挙型を使用。
  • : $table->enum('status', ['active', 'inactive', 'pending']);
  • 使用頻度: 中程度(ステータス管理やカテゴリ選択)

8. date

  • 説明: YYYY-MM-DD 形式の日付を格納。
  • : $table->date('birthday');
  • 使用頻度: 高い(誕生日やイベント日付など)

9. dateTime

  • 説明: 日付と時刻を格納(YYYY-MM-DD HH:MM:SS 形式)。
  • : $table->dateTime('published_at');
  • 使用頻度: 高い(作成日時や更新日時)

10. timestamp

  • 説明: UNIXタイムスタンプを格納。Laravelでは通常 created_atupdated_at に使用。
  • : $table->timestamp('created_at')->nullable();
  • 使用頻度: 高い(作成・更新日時の自動管理)

11. decimal

  • 説明: 高精度の浮動小数点数。小数点以下の桁数を指定可能。
  • : $table->decimal('price', 8, 2); // 最大8桁、小数点以下2桁
  • 使用頻度: 中程度(価格や割合など)

12. float

  • 説明: 浮動小数点数を格納。整数や少数を扱うが、精度は decimal に劣る。
  • : $table->float('temperature');
  • 使用頻度: 中程度(温度やスコアなどの少数値)

13. double

  • 説明: 高精度の浮動小数点数。float よりもさらに大きな数値を扱える。
  • : $table->double('latitude', 15, 8);
  • 使用頻度: 低い(高精度の数値を必要とする場合)

14. binary

  • 説明: バイナリデータ(例えばファイルや画像)を格納するカラム。
  • : $table->binary('file_data');
  • 使用頻度: 低い(画像やファイルデータの保存に)

15. json

  • 説明: JSON形式のデータを格納するカラム。構造化されたデータを格納する場合に便利。
  • : $table->json('options');
  • 使用頻度: 中程度(設定オプションや複雑なデータ)

16. uuid

  • 説明: UUID(ユニークID)を格納するカラム。グローバルにユニークなIDを使用する場合に便利。
  • : $table->uuid('identifier');
  • 使用頻度: 中程度(ユニークIDとして使用する場合)

17. char

  • 説明: 固定長の文字列を格納するカラム。
  • : $table->char('code', 6);
  • 使用頻度: 低い(短い固定長のコードや識別子)

18. ipAddress

  • 説明: IPアドレスを格納するカラム。
  • : $table->ipAddress('visitor_ip');
  • 使用頻度: 中程度(ログやトラフィック解析)

19. macAddress

  • 説明: MACアドレスを格納するカラム。
  • : $table->macAddress('device_mac');
  • 使用頻度: 低い(ネットワークデバイス管理)

20. geometry / point / polygon

  • 説明: ジオメトリ型データ(地理座標や形状)を格納するカラム。主に地理情報を扱う。
  • : $table->point('location');
  • 使用頻度: 低い(地理情報やマップデータ)

補足

Laravelのマイグレーションでは、型に加えて様々なオプションを使用して、カラムの設定を柔軟に制御できます。

  • nullable(): このカラムが NULL を許容することを指定。
  • default(): デフォルト値を設定。
  • unique(): ユニークキーを設定。

例えば、次のような定義で、email カラムを NULL を許容せず、

デフォルトで空文字を設定することができます。

$table->string('email')->default('')->unique();

このように、Laravelのマイグレーションは柔軟で、

様々なデータベース操作を簡単に扱える仕組みを提供しています。

まとめ

マイグレーションでは正しい型を指定することで、データの節約にも繋がり、

スムーズな開発にも繋がります。

全体を通してまとめておくと良いでしょう。

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