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

PHP Laravel: Type of var is different from local to server

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

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

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

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

两者都在 PHP 5.6 上使用 Laravel Framework 5.4.1,MySQL。

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

这取决于 php 和 mysql 之间使用的驱动程序。

通过检查

输出的 pdo_mysql 部分来检查使用了哪一个
php -i

你的输出应该类似于

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $

本机驱动程序 return 整数作为整数,但其他 return 它们作为字符串。

所以解决办法就是去掉旧的驱动,安装原生的。

或将 $casts 用于您的模型。

    protected $casts = [
    'status' => 'integer',
];