我在Laravel应用程序中遇到了一个奇怪的错误。
模型status
的属性x
是localhost中的整数,但是我的生产服务器中的字符串。
"status" => 1
"status" => "1"
这会在我的应用程序中引发错误,因为我使用了严格的比较。
两者都使用PHP 5.6上的Laravel Framework 5.4.1和MySQL。
所以我不知道差异来自哪里......你呢?
答案 0 :(得分:2)
这取决于php和mysql之间使用的驱动程序。
通过检查
输出的pdo_mysql部分来检查它们中的哪一个被使用php -i
您的输出应该类似于
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $
本机驱动程序将整数作为整数返回,但另一个将它们作为字符串返回。
因此,解决方案是删除旧驱动程序并安装本机驱动程序。
或将$casts
用于您的模型。
protected $casts = [
'status' => 'integer',
];