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等服务器上的客户端,最重要的是我应该纠正以防止它们出现。换句话说,我怎样才能让隐藏的数组得到执行?
请注意:对于某些其他模型(例如用户)隐藏数组是强制执行的,即隐藏字段不会出现在响应中。
任何帮助表示赞赏。
答
显示隐藏字段的原因是您直接使用DB :: table()而不是使用您的模型从数据库表中提取数据。 $ hidden数组用于将Eloquent模型序列化为JSON,并且您以这种方式绕过Eloquent层,因此查询无法知道某些列应该隐藏。
更换
$query = DB::table('reports')->where('catId', 0);
与
$query = Report::where('catId', 0);
+0
这很有道理!非常感谢Jedrzej.Kurylo! – HelloWorld
你如何创建$查询对象? –
嗨Jedrzej.Kurylo,请参阅我的编辑;-) – HelloWorld