在laravel寫接口的時候免不了數據庫中保存null,可用諸如設置ORM的訪問器或以下方法處理
$goods->name?$goods->name:'';
其實可以利用路由中間件,在需要的地方引入中間件即可
中間件
class ReplaceNullMiddleware { 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; } }
再Kernel.php引入路由中間件。使用方法
Route::post('/employeeList', 'ComController@employeeList')->middleware('replaceNull');
//遞歸方式把數組或字符串 null轉換為空''字符串 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; }