こんにちは、かつコーチです。
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_atとupdated_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のマイグレーションは柔軟で、
様々なデータベース操作を簡単に扱える仕組みを提供しています。
まとめ
マイグレーションでは正しい型を指定することで、データの節約にも繋がり、
スムーズな開発にも繋がります。
全体を通してまとめておくと良いでしょう。
