Laravel MySQL

【Laravel】boolean型にしたカラムのデータが0/1で返ってくる(Modelでキャストする)【MySQL】

migrationでは間違いなく

$table->boolean('is_xxx')->default(false);

と設定したはずが、データを取得するとint(0) / int(1)になっていることはないでしょうか。
実はMySQLではboolean型は無く、上記の設定で作成されるカラムは

`is_xxx` tinyint(1) NOT NULL DEFAULT '0',

となります。

そのためこれをこのまま取得すると0/1になってしまいます。
利用箇所で毎回キャストするのは面倒です。
ではどう対応するのか、Laravelの場合はModelにcastの機能があります。

参考:https://readouble.com/laravel/8.x/ja/eloquent-mutators.html

protected $casts = [
   'is_xxx' => 'boolean',
];

これで返ってくる値がbool(true) / bool(false)となりました。

-Laravel, MySQL
-

Copyright© F27P , 2022 All Rights Reserved Powered by AFFINGER5.