[英]Where and If Statements Laravel Eloquent
我已經為我的網站構建了一個多過濾器搜索功能,但似乎無法在搜索位置的多個if語句中找到任何文檔。
返回很多結果
$data = Scrapper::paginate(15);
不返回任何結果。需要這種方式使帶有IF的where語句可見。
$database = new Scrapper;
$database->get();
我想做的事的例子..
$database = new Scrapper;
if (isset($_GET['cat-id'])) {
$database->where('cat_id', '=', $_GET['cat-id']);
}
if (isset($_GET['band'])) {
$database->where('price', 'BETWEEN', $high, 'AND', $low);
}
if (isset($_GET['search'])) {
$database->where('title', 'LIKE', '%'.$search.'%');
}
$database->get();
與此非常相似: 基於條件的方法鏈接
您沒有存儲每個查詢鏈。
$query = Scrapper::query();
if (Input::has('cat-id')) {
$query = $query->where('cat_id', '=', Input::get('cat-id'));
}
if (Input::has('band')) {
$query = $query->whereBetween('price', [$high, $low]);
}
if (Input::has('search')) {
$query = $query->where('title', 'LIKE', '%' . Input::get($search) .'%');
}
// Get the results
// After this call, it is now an Eloquent model
$scrapper = $query->get();
var_dump($scrapper);
老問題但新邏輯:)
您可以使用Eloquent when()條件方法:
Scrapper::query()
->when(Input::has('cat-id'), function ($query) {
return $query->where('cat_id', Input::get('cat-id'));
})
->when(Input::has('band'), function ($query) use ($hight, $low) {
return $query->whereBetween('price', [$high, $low]);
})
->when(Input::has('search'), function ($query) {
return $query->where('title', 'LIKE', '%' . Input::get('search') .'%');
})
->get();
有關更多信息, 請訪問https://laravel.com/docs/5.5/queries#conditional-clauses
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.