我从我的 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中是否有内置功能将空值更改为空刺?我想回到这个json对象:
{
"id": 1,
"name": "Test",
"email": "anything@example.com",
"descr": ""
}
有什么想法?
如果您没有任何选择,并且确实需要它,则可以使用中间件进行此操作。
在文件夹app/Http/Middleware
中使用以下代码创建一个名为NullToBlank.php
的文件:
<?php
namespace AppHttpMiddleware;
use IlluminateDatabaseEloquentModel;
use Closure;
class NullToBlank
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $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
中,请确保添加:
AppHttpMiddlewareNullToBlank::class,
在$middleware
。
这应该解决问题。我没有亲自测试过,我只是在旅途中做过,如果您有问题,请告诉我。
luca
在返回之前添加此功能
array_walk_recursive($array, function(&$item){
$item = strval($item);
});