Hel*_*rld 1 php laravel eloquent laravel-5
首先,我在网上搜索了一个答案,却找不到令我惊讶的任何答案。也许我没有搜索正确的术语,如果是这种情况,请事先打扰。
所以我在模型中定义了一些隐藏的字段:
protected $hidden = [
'hasExpired', 'hasBeenTreated', 'reporterId'
];
Run Code Online (Sandbox Code Playgroud)
这就是我输出结果的方式:
return response()->json([
'latestReports' => $latestReports
]);
Run Code Online (Sandbox Code Playgroud)
$ latestReports变量在其他地方定义为:
$query = DB::table('reports')
->where('catId', 0) ;
$latestReports = $query->where('hasExpired', 0)
->orderBy('created_at', 'desc')
->get();
Run Code Online (Sandbox Code Playgroud)
这些字段仍然有可能出现在我从服务器获得的客户端响应中,最重要的是,我应该纠正这些问题以防止它们出现。换句话说,如何使隐藏数组得到强制执行?
请注意:对于某些其他模型(例如,用户),将强制使用隐藏数组,即隐藏字段不会出现在响应中。
任何帮助表示赞赏。
显示隐藏字段的原因是,您直接使用DB :: table()而不是使用模型从数据库表中获取数据。$隐藏在将Eloquent模型序列化为JSON时,将使用数组,并且您以这种方式绕过了Eloquent层,因此查询无法知道某些列应该被隐藏。
更换
$query = DB::table('reports')->where('catId', 0);
Run Code Online (Sandbox Code Playgroud)
与
$query = Report::where('catId', 0);
Run Code Online (Sandbox Code Playgroud)