如何为来自 URL 的查询字符串构建 Laravel Eloquent?

How to build Laravel Eloquent for Query String from URL?

我是 Laravel,

的新手

来自url的查询字符串可能是三种

  1. "Filter" 和 "Status":http://localhost/products?filter=productName&value=Test+Product+1&status=A&action=Filter+Result
  2. "Filter","Status" 将为空:http://localhost/products?filter=productName&value=Test+Product+1&status=&action=Filter+Result
  3. "仅状态并且 "Filter" 将为空:"Filter" 和 "Status" http://localhost/products?filter=&value=&status=A&action=Filter+Result

现在我可以从 Controller 使用 $inputQ = Request::input()

访问查询字符串

正常情况下php我可以像下面那样简单

$sql = 'SELECT * FROM products WHERE 1 = 1';

if(isset($_REQUEST['filter']) && $_REQUEST['filter'] != '' && $_REQUEST['value'] != ''){
$sql .= 'AND `'.$_REQUEST['filter'].'` = "'.addslashes($_REQUEST['value']).'"';
}

if(isset($_REQUEST['status']) && $_REQUEST['status'] != ''){
$sql .= 'AND `status` = "'.addslashes($_REQUEST['status']).'"';
}

$res = mysql_query($sql);

现在我需要构建 Laravel Eloquent 请帮助我。

我想您正在寻找这样的东西?我没有测试它,但我想它应该可以工作。

$query = DB::table('products')->where(1, '=', 1);

if(Input::has('filter') && Input::has('value')){
    $query->where(Input::get('filter'), '=', Input::get('value'));
}

if(Input::has('status')){
    $query->where('status', '=', Input::get('status'));
}

$res = $query->get();