如何从URL构建Laravel Eloquent查询字符串?

时间:2015-02-17 09:14:39

标签: mysql laravel laravel-4 eloquent

我是Laravel的新手,

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

  1. 两者"过滤"和"状态":http://localhost/products?filter=productName&value=Test+Product+1&status=A&action=Filter+Result
  2. "过滤器"只有"状态"将为空:http://localhost/products?filter=productName&value=Test+Product+1&status=&action=Filter+Result
  3. "仅限状态和"过滤"将是空的:"过滤"和"状态" http://localhost/products?filter=&value=&status=A&action=Filter+Result
  4. 现在来自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,请帮助我。

1 个答案:

答案 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();