Laravelではidカラムのデータ型は【符号なしBIGINT】を使う理由

Laravelデータベース

Laravelでは、idカラムのデータ型は unsignedBigIntegerを選択します。

マイグレーションファイルには、【$table->unsignedBigInteger(‘user_id’)】のように記述する必要があります。

リレーションなどで相手のidを入れたidカラムを作るときには、ご注意ください。

でもIDのデータ型って、integerでもよい気がしませんか?

実は、わたしは最初そう思いました。同じように「なぜ符号なしBIGINTのデータ型を使うべきなの?」と疑問に思う人のために、解説していきますね。

*本記事で使用するLaravelのバージョンはLaravel8です。

Laravelではidカラムのデータ型は【符号なしBIGINT】を使う理由

なぜidのデータ型はunsignedBigIntegerなのか。

これは、下記のLaravelの公式マニュアルを検索すると分かります。

ただしすぐには分からず、3ステップの検索が必要です。

1回目の検索:$table->id

まずは公式マニュアルを開きます。

8.x マイグレーション Laravel

マイグレーション時にデータ型を調べるときは、このページの【使用できるカラムタイプ】を参照します。

一番上には 【$table->id();】とあります。

つまり、idのデータ型には、これが使われているのです。

なお説明欄には【 $table->bigIncrements(‘id’)の別名】とあります。

$table->id(); = $table->bigIncrements(‘id’)の別名

2回目の検索:$table->bigIncrements(‘id’)

【$table->bigIncrements(‘id’)】を検索してみると、2つほど下に、該当するものがありました。

$table->bigIncrements(‘id’) = 符号なしBIGINTを使用した自動増分ID(主キー)

自動増分というのは、自動で連番が割り振られていくということ。

デフォルトで使うidであればよいのですが、自分でid番号をつけたいときには使いにくいですね。そこで、もうちょっと調べてみることにします。

3回目の検索:符号なしBIGINT

2回目の検索結果で、idには【符号なしBIGINT】と使用せねばならないことは分かりました。

そこで【符号なしBIGINT】で検索をかけてみます。

すると、次のようなデータ型がありました。

$table->unsignedBigInteger(‘votes’); = 符号なしBIGINTカラム

つまり、これが使うべきデータ型になります。

マイグレーションファイルでは、たとえば【user_id】カラムに、次のような感じでデータ型を指定します。

符号なしBIGINTとは?

符号なしBIGINTは、ものすごい量を格納できるデータ型です。どれぐらいの量が可能か、ざっくり解説しますね。

BIGINTとは、BigIntegerの略。値の範囲は、次のとおりです。

-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

さらに 符号なしBIGINTとは、マイナス部分がないBIGINT、ということ。

つまりマイナス部分で使うべき部分も利用できるので、そのぶん、格納できる量が増えます。具体的には、次のとおりです。

0 ~ 18,446,744,073,709,551,615

 

Junko
Junko

多すぎて口頭で読み上げられないぐらい・・・。

スゴイ量のデータが格納できますね。

 

おまけ:foreignId() でもOK

なおunsignedBigIntegerではなく、foreignId()メソッドを使うことも可能です。Laravelの公式マニュアルには次のように書かれています。

foreignIdメソッドはunsignedBigIntegerメソッドのエイリアスです。

$table->foreignId(‘user_id’);

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

まとめ

今回のまとめ

idカラムでは、データ型は符号なしBIGINTを使う

理由は公式マニュアルを3ステップで検索すると分かる

「少しスッキリした!」と感じてもらえたら嬉しいです。

データ型のこととか、慣れないうちは何を使ってよいか分からず、困りますよね。

「データ型や、Laravelでデータベースを作成する方法を知りたい」という人向けに、学習サイト「初心者のためのLaravelの教科書」にて、Laravelの使い方をいちから解説しています。

登録は無料です。興味があったら、下記をクリックして詳細を見てみてくださいね。

Laravelの教科書について詳しく見る

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

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

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

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

【無料プレゼント】

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

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

詳細はこちらをクリック

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

【AWS関連・Webアプリ開発・生成AIのAPI活用のご相談承ってます】
お気軽にお声がけください。
御社にとって、最善の方法をご一緒に考えてまいります。
Zoomミーティング実施中。サンプルアプリご利用可能です。

お問合せフォーム

Laravelの本を書きました。


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

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

書籍の詳細を見てみる

Laravelの本を書きました。


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

最新版Laravel11用のサポートガイドご用意しています。

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

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました