我的网络应用程序在服务器上运行。我在本地测试了代码,效果很好。我从本地服务器获取的 id 为 int,但在托管服务器中获取的是字符串。
使用 PHP 7.3
$data = DB::table('users')
->select('id')
->get();
$data = $data->pluck(id);
(本地) 输出 => [1,2,3]
(主持) 输出=> [“1”,“2”,“3”]
有人可以帮忙解决这个问题吗?我可以循环进行类型转换,但我的控制器中有 100 个 for 函数。不可能对每个查询进行类型转换。
您可以在模型中使用铸造属性铸造
protected $casts = [
'field_name1' => 'integer',
];
这是由于生产服务器(托管服务器)上缺少插件造成的。 您需要安装
mysqlnd
插件才能解决该问题。
您没有提到您正在使用哪个操作系统。如果是Linux的话可以像这样检查
mysqlnd
是否安装
$ sudo dpkg -l | grep 'mysqlnd'
如果没有安装,你需要像这样安装(假设你有php5)
$ sudo apt-get install php-mysqlnd
包名称可能因 PHP 版本而异。
请参阅我的答案以获取更多信息。
您需要安装并选择nd_pdo_mysql而不是pdo_mysql。