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文字格納できます。

ただ日本語の場合には一文字を格納するのに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型は画像を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でWebアプリをいちから作れるようになりたい!」

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

詳細はこちらをクリック

【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
スポンサーリンク
40代からプログラミング!

コメント

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