2017-04-07 94 views
1

首先,我在網上搜索了一個答案,但找不到讓我感到驚訝的任何內容。也許我沒有找到正確的條款,如果是這樣,請提前原諒我。Laravel 5.3:在JSON響應中返回隱藏字段

所以我在我的模型中定義的某些字段爲隱藏:

protected $hidden = [ 
    'hasExpired', 'hasBeenTreated', 'reporterId' 
]; 

這就是我如何輸出結果:

return response()->json([ 
     'latestReports' => $latestReports 
     ]); 

而且latestReports $變量定義在別處爲:

$query = DB::table('reports') 
      ->where('catId', 0) ; 

$latestReports = $query->where('hasExpired', 0) 
      ->orderBy('created_at', 'desc') 
      ->get(); 

究竟是如何可能這些字段仍然出現在響應中I g等服務器上的客戶端,最重要的是我應該糾正以防止它們出現。換句話說,我怎樣才能讓隱藏的數組得到執行?

請注意:對於某些其他模型(例如用戶)隱藏數組是強制執行的,即隱藏字段不會出現在響應中。

任何幫助表示讚賞。

+0

你如何創建$查詢對象? –

+0

嗨Jedrzej.Kurylo,請參閱我的編輯;-) – HelloWorld

回答

4

顯示隱藏字段的原因是您直接使用DB :: table()而不是使用您的模型從數據庫表中提取數據。 $ hidden數組用於將Eloquent模型序列化爲JSON,並且您以這種方式繞過Eloquent層,因此查詢無法知道某些列應該隱藏。

更換

$query = DB::table('reports')->where('catId', 0); 

$query = Report::where('catId', 0); 
+0

這很有道理!非常感謝Jedrzej.Kurylo! – HelloWorld