Laravel 5读取Blob/longtext字段返回TRUE/1问题求助
问题根源与解决方案
我一眼就看出问题出在你的模型类型转换($casts)配置上!
看你的Taccuino模型代码,这两个字段被强制转换成了布尔类型:
protected $casts = [ // ... 其他配置 'taccuino_report_anteriore' => 'boolean', 'taccuino_report_posteriore' => 'boolean' ];
不管你数据库里存的是什么字符串内容,只要这个字段非空,Laravel就会把它转换成true(在Blade模板里输出就是1)——这就是你遇到诡异现象的核心原因!
修复步骤:
修正模型的类型转换配置
把这两个字段的boolean改成string,或者直接从$casts数组里删掉这两行(Laravel会自动把binary/longtext字段当作字符串处理):protected $casts = [ 'id_taccuino' => 'int', 'id_paziente' => 'int', // 删掉下面两行,或者替换为 'string' // 'taccuino_report_anteriore' => 'boolean', // 'taccuino_report_posteriore' => 'boolean' ];清理Laravel缓存(可选但推荐)
框架有时会缓存模型元数据,执行以下命令确保修改生效:php artisan cache:clear php artisan config:cache验证效果
现在再在Blade里使用{{$record->taccuino_report_posteriore}},就能正常输出数据库中存储的实际字符串内容了。
补充说明:你之前把字段从Blob改成longtext的方向是对的,但模型里的类型转换没同步更新,才导致问题依旧。只要修正模型的casts配置,就能彻底解决问题!
内容的提问来源于stack exchange,提问作者Giuseppe Barbato
相关产品推荐
相关产品推荐

