【发布时间】:2013-07-27 23:07:43
【问题描述】:
我的 laravel 网站上有一个新闻故事列表。在/news/ 页面上显示了故事的快速列表。
现在我想允许用户过滤新闻。例如,只显示“体育”故事。
在我的控制器中,我这样做了:
$input = Input::all();
$events = DB::table('news')
->where('category', '=', $input['type'])
->order_by('created_at', 'desc')
->paginate(10);
现在,这让我可以访问/news?type=sports,它只正确显示体育类别中的新闻项目。这仅在给出类型时才有效,如果没有给出类型,显然会失败。
解决这个问题的最佳方法是什么?我知道我可以检查$input['type'] 是否存在,如果存在,则编写一个全新的第二个"$news = DB::table('news')..." 代码,但我认为我实际上可能想要多个用户输入,这会使该选项不存在工作。例如,如果我想按类型和位置排序怎么办? /news?type=sports&area=chicago 之类的东西——那我该怎么办?
我知道我必须在这里遗漏一些明显的东西。谁能指出我正确的方向?
【问题讨论】:
-
你应该使用 URI 作为路由参数,而不是通过 GET。
标签: php variables laravel eloquent