0
我正在嘗試查找在Laravel 5.1中查詢的最乾淨的方法。我正在創建一個API,它將從MySQL數據庫返回一個JSON字符串。如果未提供過濾器,則忽略Laravel數據庫查詢中的「where」子句
我希望能有像
mydomain.com/api/courses
一個URL,將返回所有我們的課程的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爲此建造了什麼?
啊,完美。對於每個額外的查詢參數,我只需要一個額外的'if'語句,對嗎? – cchapman
@cchapman - 如果你有很多這樣的參數,可能使用'array_only'更好。 –