从服务器获取时 Laravel 将 Int 转换为字符串的问题?
Posted
技术标签:
【中文标题】从服务器获取时 Laravel 将 Int 转换为字符串的问题?【英文标题】:Issue with Laravel casting Int to string when fetching from server? 【发布时间】:2021-07-20 00:58:13 【问题描述】:我的 Web 应用程序在服务器上运行。我在本地测试了代码,它工作正常。我从本地服务器获取 id 作为 int,但在托管服务器中获取字符串。
使用 php 7.3
$data = DB::table('users')
->select('id')
->get();
$data = $data->pluck(id);
(本地) 输出 => [1,2,3]
(托管) 输出 => ["1","2","3"]
谁能帮助解决这个问题?我可以循环输入类型转换,但我的控制器中有 100 个函数。无法对每个查询进行类型转换。
【问题讨论】:
***.com/questions/31527050/… 可能会有所帮助 【参考方案1】:你可以在你的模型中使用铸造Attribute Casting
protected $casts = [
'field_name1' => 'integer',
];
【讨论】:
【参考方案2】:这是由于生产服务器(托管服务器)上缺少插件。
您需要安装mysqlnd
插件来解决此问题。
您没有提到您使用的是哪个操作系统。如果是Linux,可以检查mysqlnd
是否安装了这样
$ sudo dpkg -l | grep 'mysqlnd'
如果没有安装,需要这样安装(假设你有php5)
$ sudo apt-get install php-mysqlnd
软件包名称可能因 PHP 版本而异。
请参考我的answer 了解更多信息。
【讨论】:
以上是关于从服务器获取时 Laravel 将 Int 转换为字符串的问题?的主要内容,如果未能解决你的问题,请参考以下文章
为啥建议从矩阵中获取最大值的函数->无法将'int(*)[C]'转换为'int(*)[0]
将较大的字符串值转换为数字 laravel。 (int) 给出错误的值
将 JSON 数据从 API 转换为数组并在 Laravel 和 Guzzle HTTP Client 中分别显示?
获取 IllegalArgumentException:尝试添加包含 AtomicInteger int redis 缓存的数据时无法将 String 转换为 AtomicInteger