涉及到sql查询数据时,字段值为空默认返回null,前端处理很麻烦,更改思路;设置中间件递归返回数据并返回‘’值。
例子:
<?php
namespace App\Http\Middleware;
use Closure;
class ReplaceNull
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
$data = json_decode($response->getContent(), true);
if(isset($data['data'])){
$newData = _unsetNull($data['data']);
$data['data'] = $newData;
return $response->setContent(json_encode($data));
}
return $response;
}
}
设置公共方法:
function _unsetNull($arr)
{
if ($arr !== null) {
if (is_array($arr)) {
if (!empty($arr)) {
foreach ($arr as $key => $value) {
if ($value === null) {
$arr[$key] = '';
} else {
$arr[$key] = _unsetNull($value); //递归再去执行
}
}
}
} else {
if ($arr === null) {
$arr = '';
} //注意三个等号
}
} else {
$arr = '';
}
return $arr;
}
路由读取此中间件,完成。