Laravelのマイグレーション用に覚えておくべきデータ型6個

Laravel 入門講座

Laravelではマイグレーションファイルにデータベースのためにデータタイプを指定する必要があります。

毎回調べるのもメンドウなので、とりあえず、下記の6個を覚えておくと便利です。

データ型 説明(公式サイトより) 使用時
integer INTEGERカラム 整数
string VARCHARカラム 名前など短めの文字列
text TEXTカラム コメントなどの文字列
longText LONGTEXTカラム かなり長い文字列
unsignedBigInteger 符号なしBIGINTカラム 他のテーブルのID
boolean BOOLEANカラム true/false

分かりにくい部分だけ、少し説明をしていきますね。

Laravelの公式マニュアルのマイグレーションページはこちら。

integerタイプ

整数に便利なのがinteger。

マイグレートを実行すると、データベース(phpMyAdmin)上でInt(11)に自動変換されます。

11桁までの整数に使えます。

stringタイプ

たとえば、フォームに名前などいれてもらうときは string あたりが使えます。

マイグレートを実行すると、データベース(phpMyAdmin)上でvarchar(255)という形に自動変換されます。

最大文字数は255文字となります。

つまりstringに指定すると、デフォルトでは長いテキストデータは保存できません。

textタイプ

お問い合わせフォームや、通常の投稿であれば、textタイプ。

状況によって文字の長さは異なりますが、MySQLのページによると、text型が扱える文字数は6万5千文字程度。

最大長が 65,535 (216 − 1) 文字の TEXT カラム。値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。

*参考元:MySQL 文字列型の概要

デフォルトの文字セット(UTF-8 Unicode (utf8mb4))で日本語を保存する場合は、その4分の1程度となります。

longTextタイプ

かなり長くなりそうであったり、画像をbase64に変換するなど、通常ではないような文字数が予想される場合は、longTextが候補になります。

text型の65,000倍の長さを格納できます。

最大長が 4,294,967,295 または 4G バイト (232 − 1) 文字の TEXT カラム。値にマルチバイト文字が含まれる場合、有効な最大長は少なくなります。

*参考元:MySQL 文字列型の概要

unsignedBigIntegerタイプ

リレーションを作ったりして、他のテーブルのIDを入れる場合には、unsignedBigInteger を使います。

なぜなら、これがデフォルトのIDタイプだからです。

unsignedBigInteger については、下記でも解説しています。

Laravelではidカラムのデータ型は【符号なしBIGINT】を使う理由
Laravelでは、idカラムのデータ型は unsignedBigIntegerを選択します。 マイグレーションファイルには、【$table->unsignedBigInteger('user_id')】のように記述する必要があ...

データ型に迷ったら

とりあえず、安全そうなほうを選んでおくことをおすすめします。

「そんなに長い文字列は入らないとおもうけど、stringで大丈夫かな」

と思ったら、長めのデータを保存できるtextを選んだほうが無難。

後からデータタイプを変えることもできますが、手間がかかります^^;

下記にデータタイプの変更方法を解説しているので「しまった!」というときには、参考にしてください。

 

じゅんこ
じゅんこ

Laravelの使い方は他の記事でも色々解説しているので、良かったら参考にしてください。

コメント

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