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の教科書の詳細を見る

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

【無料プレゼント】

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

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

詳細はこちらをクリック

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

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

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

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

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

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

コメント

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