laravel之null替換空字符串中間件


在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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM