我最近因各种原因将我的服务器更新为更新版本的MySQL和PHP 7。在我之前的实例中,运行PHP 5.5,Laravel的response()->json()
总是将tinyint
转换为字符串。现在运行更新的服务器软件,它正在返回int
- 它应该......
我必须将大量的代码库更改为转换类型/手动将它们转换为字符串,这是我目前要避免的。
有没有办法以某种方式强制response()->json()
将int
作为string
返回?
答案 0 :(得分:2)
有没有办法以某种方式强制响应() - > json()将int' s作为字符串' s
我不想更改代码库 - 不想转换类型,转换它,
没有。没有选择。如果需要,你需要自己做。
答案 1 :(得分:1)
有一种方法可以将整数转换为laravel中的字符串
在模型中可以将id转换为字符串。其内容如下
protected $casts = [ 'id' => 'string' ];
但缺点是你必须为所有模特做到这一点。
答案 2 :(得分:0)
如果您不想修改大量代码,可以通过快速而肮脏的功能运行响应数据。您应该将数据作为嵌套数组获取,而不是将目录转移到JSON。然后把它通过这样的函数:
function convertIntToString ($myArray) {
foreach ($myArray as $thisKey => $thisValue) {
if (is_array($thisValue)) {
// recurse to handle a nested array
$myArray[$thisKey] = convertIntToString($thisValue);
} elseif (is_integer($thisValue)) {
// convert any integers to a string
$myArray[$thisKey] = (string) $thisValue;
}
}
return $myArray;
}
该函数将整数转换为字符串,并使用递归来处理嵌套数组。从中获取输出,然后将其转换为JSON。
答案 3 :(得分:0)
对我来说,最好的解决方案是使用attribute casting和 Fractal transformers
如果包含多个关系的复杂响应,分形变换器非常有用。
答案 4 :(得分:-1)
您可以将其强制转换为字符串:
return response-> json([“data”=>(string)1]);