laravelの文字列用のデータ型stringとtextとlongTextの違い。何文字まで入れられる?

Laravelデータベース

Laravelで文字列を格納する時、「どのデータ型を使えばいいんだろう」と悩んだら、255文字以内なら string, 16384文字以内ならtext, それ以上ならlongTextを使うと良いでしょう。

【Laravelデータ型文字数制限目安表】

データ型 文字数制限目安
string 255
text 16384
longText 1GB
じゅんこ
じゅんこ

longTextの出番はあんまりないかな、と思いますが。

なぜこのような文字数になるのか? それぞれの基準の計算方法を解説します。

Laravelのstring型について

Laravelのstring型は、MySQLのvarchar型となります。

例えば次のようにマイグレーションファイルでstring型を指定してデータベースを作るとします。

データベーステーブルには、dangoカラムデータ型は varchar(255) と設定されています。

つまり、string型を長さ指定なしで使うと、255文字まで格納できることになります。日本語でも英語でも同じです。

それほど長い文章には適さないので、string型は件名やタイトル、名前といった情報に使われます。

Laravelのtext型について

Laravelのtext型は、MySQLのtext型となります。

text型で保存できる文字数は 65,535バイトまで。英数字であれば、65,535文字格納できます。

text型は文字数ではなく、バイトで指定します。

日本語の場合には一文字を格納するのに4バイト使う可能性があり*、65,535を4で割った16,384文字程度までしか保存できません。

【text型で保存できる日本語の文字数の計算】

65,535÷4=16,384文字程度

本文部分など、ある程度長い文章を入れるときにはtext型が適しています。

*文字によって何文字使うかは異なります。

LaravelのlongText型について

Laravelのtext型は、MySQLのlongText型となります。

これは4GBバイトまで格納できます。日本語であっても、1GBまで入れることができます。

【longText型で保存できる日本語の文字数の計算】

4GB÷4=1GB文字程度

かなりの文字数に思われますが、タグなども含む文章の場合には、わりと多くの文字が使われます。なので、longTextが使用されたりします。ちなみに、Wordpressの投稿の本文にはlongtext型が使われています。

またlongText型は画像をbase64エンコードしてhtmlテキストの中に埋め込むような時に使えます。

おまけ1:string型で長さを指定する場合

ちなみにstring型は、長さを指定して使うことも可能です。

Laravelの公式マニュアルには、次のように書いてあります。

stringメソッドは、指定された長さのVARCHARカラムを作成します。

参考:https://readouble.com/laravel/8.x/ja/migrations.html

このようにすると65,535バイトまで格納できるかと思われますが、実験していません^^;

じゅんこ
じゅんこ

多めの文字数を入れる場合には、text型を使っています。

おまけ2:長さの指定にはバリデーションも使えます

なお、「何文字以内しか入力してほしくない」場合には、バリデーションを使うと便利です。

たとえば 「name属性の値は、20文字以内しか入れてほしくない」という場合、コントローラーのstoreメソッドなどに、次のようにバリデーションを設定できます。

さいごに

「長さがどれぐらいになるか分からない。」という場合は、テーブルを作る際、文字を多めに格納できるデータ型を選んでおくと便利かなと思います。

じゅんこ
じゅんこ

文字数が足りないとエラーになっちゃうので。

Laravelのデータ型はこちらの記事も参考になります。

Laravelデータベース

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

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

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

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

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

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる


Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
セミナーで、StripeやChatGPT連携、デバックなど実践スキルを分かりやすく学べます。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました