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