我的Laravel 5.6
收到了回复:
{
"id": 1,
"name": "Test",
"email": "anything@example.com",
"descr": null
}
它来自这个Laravel PHP
代码:
public function show($id) {
return Client::find($id);
}
Laravel 5.6中是否有内置函数将空值更改为空sting?我想找回这个json对象:
{
"id": 1,
"name": "Test",
"email": "anything@example.com",
"descr": ""
}
有什么想法吗?
答案 0 :(得分:2)
如果您没有任何选择而且确实需要它,您可以使用中间件来完成此操作。
使用以下代码在NullToBlank.php
文件夹中创建名为app/Http/Middleware
的文件:
<?php
namespace App\Http\Middleware;
use Illuminate\Database\Eloquent\Model;
use Closure;
class NullToBlank
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$output = $next($request);
if($output instanceof Model)
return response()->json(array_map(function ($value) {
return $value === null ? '' : $value;
}, $output->toArray()));
return $output;
}
}
如果您只需要在返回的模型上更改值,而不是在相关模型上更改值,则会出现这种情况。在返回+所有相关模型的情况下,条件if($output instanceof Model)
变为:
if($output instanceof Model) {
$modelAsArray = $output->toArray();
array_walk_recursive($modelAsArray, function (&$item, $key) {
$item = $item === null ? '' : $item;
});
return response()->json($modelAsArray);
}
在app/Http/Kernel.php
中确保添加:
\App\Http\Middleware\NullToBlank::class,
<{1>}下的。
这应该可以解决问题。我没有亲自测试过,我只是在旅途中做过,如果你有问题,请告诉我。
卢卡
答案 1 :(得分:0)
返回前添加此函数
array_walk_recursive($array,function(&$item){$item=strval($item);});