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でWebアプリをいちから作れるようになりたい!」

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

詳細はこちらをクリック

【個別サポート実施中】

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

詳しく見る

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

コメント

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