PHP Laravel:var的类型与本地到服务器不同

时间:2017-03-14 16:32:59

标签: php laravel casting type-conversion var

我在Laravel应用程序中遇到了一个奇怪的错误。

模型status的属性x是localhost中的整数,但是我的生产服务器中的字符串。

"status" => 1 "status" => "1"

这会在我的应用程序中引发错误,因为我使用了严格的比较。

两者都使用PHP 5.6上的Laravel Framework 5.4.1和MySQL。

所以我不知道差异来自哪里......你呢?

1 个答案:

答案 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',
];