2017-04-07 14 views
1

まず最初に、Webを検索して答えを見つけてくれた。たぶん私は適切な条件を検索していない、この場合は事前に私を許してください。Laravel 5.3:JSONレスポンスで非表示のフィールドが返される

だから、隠されたとして、私は私のモデルにいくつかのフィールドを定義した:

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

そして、これはどのようにI出力結果である:

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

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

を置き換えますか? –

+0

こんにちはJedrzej.Kurylo、私の編集を参照してください;-) – HelloWorld

答えて

4

モデルを使用する代わりにDB :: table()を使用して直接データベーステーブルからデータをフェッチする理由があります。 $ hidden EloquentモデルをJSONにシリアライズするときに配列が使用されています。この方法でEloquentレイヤーをバイパスしているため、一部の列を非表示にする方法がないためです。

はどのように$クエリオブジェクトを作成します

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

それは理にかなっています!ありがとうJedrzej.Kurylo! – HelloWorld

関連する問題