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に代入してください。
is_correctの値がTrueの値を取得して、 $resultsに代入してください。
この条件に該当するのは、下記のデータです。
条件式ではTrueを指定していますが、ちゃんと 【is_correct】が【1】になっているデータを取ってきてくれます。
取得結果をforeachを使ってビューで表示させると、次のようになります。
ちゃんと値が表示されています。
まとめ
今回のまとめboolean型はmysql上ではtinyint(1)になる
入力するときは、Trueは1、Falseは0をいれる。
入力した値を条件式などで利用する場合は、True/Falseが使える
もちろんTrueやFalseではなく、1や0を使って条件式を作ることもできます。
ちょっとややこしいですが、頭の片隅にでも置いておくと、boolean型を使うときに便利です。