我想为所有应用程序查询添加一个过滤器,以获取特定年份的结果。
我将当前年份放入 session 中,如下所示:
public function postLogin()
{
Session::put('currentYear', date("Y"));
}
我的应用程序中有很多 Controller 。我希望任何模型的查询结果按 session 年份过滤 => Session::get('currentYear')
我有很多模型;例如,我有一条路线可以查看所有用户、教师和学生。
public function getList()
{
$data['students'] = User::where('group_id', '=', 4)->get();
return View::make('students.list', $data);
}
我可以将 __construct
放在 BaseController 中以通过 Session::get('currentYear')
过滤所有应用查询吗?
最佳答案
我将使用提供所需基本查询的方法创建一个存储库类,例如
函数 getUserBaseQuery() {
返回 User::where('year', '=', Session::get('currentYear'));
}
显然要确保 currentYear
已设置 - 并在不运行 get()
的情况下返回它。
然后在您进行查询时获取此基本查询,添加更多操作(限制、顺序等)并运行 get()
。
这样您就可以使用您的过滤器进行访问,而不会造成一些全局性的潜在损害,并通过选择该基本查询来了解正在运行的过滤器。
这对你来说有意义吗?
关于php - 如何按年份过滤laravel 4.2 app中的所有查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43997517/