Laravel 5.3:在JSON响应中返回隐藏字段

Laravel 5.3:在JSON响应中返回隐藏字段

问题描述:

首先,我在网上搜索了一个答案,但找不到让我感到惊讶的任何内容。也许我没有找到正确的条款,如果是这样,请提前原谅我。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

显示隐藏字段的原因是您直接使用DB :: table()而不是使用您的模型从数据库表中提取数据。 $ hidden数组用于将Eloquent模型序列化为JSON,并且您以这种方式绕过Eloquent层,因此查询无法知道某些列应该隐藏。

更换

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

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

这很有道理!非常感谢Jedrzej.Kurylo! – HelloWorld