【发布时间】:2016-06-18 13:03:56
【问题描述】:
我目前正在尝试在 Laravel 5.1 中找到最简洁的查询方式。我正在创建一个从 MySQL 数据库返回 JSON 字符串的 API。
我希望能够有一个类似的网址
mydomain.com/api/courses
这将返回我们所有课程的 JSON 列表。而且我还希望能够传入一个 GET 查询参数,例如
mydomain.com/api/courses?subject=BUS
这将只返回商业课程。到目前为止非常基本。在我的控制器中,我有
$subject = \Request::input('subject');
if ($subject) { //filter to only query parameters
$results = \DB::table('course_listings')
->where('subject', $subject)
->get();
} else { //return all results
$results = \DB::table('course_listings')->get();
}
但是,这似乎有点不必要的混乱,特别是如果我想开始添加额外的查询参数。如果查询参数为空,我想做的是能够忽略where()。
$results = \DB::table('course_listings')
->where('subject', $subject) //ignore this line if no $subject
->get();
出于性能目的,我还希望避免加载所有结果,然后再应用过滤器。 Laravel 中是否为此构建了任何东西?
【问题讨论】:
标签: php database laravel eloquent