LaravelでBoolean型のカラムににTrueやFalseが入らない原因と対策

Laravelデータベース

Laravelでカラムのデータ型にBoolean型を指定すると、mysqlではデータ型はtinyint(1)になります。

そのため、コントローラーからmysqlにデータを入れる時にTrueやFalseではうまく入力できません。

Trueの場合は1、Falseの場合は0を入れてみてください。

LaravelでBoolean型は、mysqlではtinyint(1)になる

データ型の違いについて、実際の画面で解説します。

こちらがLaravelのマイグレーションファイルですが、ちゃんとBoolean型を指定しています。

このファイルをマイグレートすると、データ型が下記のようにtinyint(1)になります。

この【is_correct】カラムに値をいれるときには、TrueやFalseではなく、Trueの場合は1、Falseのときは0を入れましょう。

ただし条件を指定する場合にはTrueとFalseが使える

ですが条件式などでカラムの値を使う場合には、True・Falseが使えます。

じゅんこ
じゅんこ

ちょっとややこしいですが。

たとえば、下記のようにLaravelのコントローラーにコードを書いてみます。

コードの意味
is_correctの値がTrueの値を取得して、 $resultsに代入してください。

この条件に該当するのは、下記のデータです。

条件式ではTrueを指定していますが、ちゃんと 【is_correct】が【1】になっているデータを取ってきてくれます。

取得結果をforeachを使ってビューで表示させると、次のようになります。

ちゃんと値が表示されています。

まとめ

 

今回のまとめboolean型はmysql上ではtinyint(1)になる

入力するときは、Trueは1、Falseは0をいれる。

入力した値を条件式などで利用する場合は、True/Falseが使える

 

もちろんTrueやFalseではなく、1や0を使って条件式を作ることもできます。

ちょっとややこしいですが、頭の片隅にでも置いておくと、boolean型を使うときに便利です。

Laravelデータベース

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

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

【無料プレゼント】

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

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

詳細はこちらをクリック
【LaravelでWebアプリ開発します】

「会員制サイトを作ってほしい」「開発の時間がないから頼みたい!」

こんなご要望承り中。オンラインミーティングでも、ご相談承ります。

サンプルやお見積もり目安を見てみる

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

コメント

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