我是Laravel的新手,
来自url的查询字符串可能是三种
http://localhost/products?filter=productName&value=Test+Product+1&status=A&action=Filter+Result
http://localhost/products?filter=productName&value=Test+Product+1&status=&action=Filter+Result
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,请帮助我。
答案 0 :(得分:1)
我认为你正在寻找这样的东西?我没有测试它,但我想它应该可行。
$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();