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

Laravelデータベース

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

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

データ型 説明(公式サイトより) 使用時
integer INTEGERカラム 整数
string VARCHARカラム 名前など短めの文字列
text TEXTカラム コメントなどの文字列
longText LONGTEXTカラム かなり長い文字列
unsignedBigInteger

foreignId

符号なし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 については、下記でも解説しています。

なお、unsignedBigIntegerの代わりにforeignIdを使ってもOKです。

Laravel公式マニュアルには、次のように記載されています。

foreignIdメソッドはUNSIGNED BIGINTカラムを作成します。

*参考:https://readouble.com/laravel/9.x/ja/migrations.html#column-method-foreignId

データ型に迷ったら

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

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

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

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

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

 

じゅんこ
じゅんこ

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

Laravelの使い方をいちから学びたい!と思ったら、学習サイト【Laravelの教科書】ご活用ください♪

 

*更新履歴*

-2022/03/18:foreignIdについての記載を追加しました

Laravelデータベース Laravel入門講座

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

社内にWebアプリ開発経験がなくて、困ってませんか?

「自社でWebアプリ開発を始めていきたい」
という企業様のために、Laravelセミナー・プログラミング教育を実施しています。

【セミナー使用スライド】

詳細はこちらご覧ください

Twitter始めました。
40代からプログラミング!

コメント

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