2015-04-05 43 views
0

如何使用Eloquent Builder連接查詢?使用Eloquent Builder連接查詢

我建立基於標準(where子句)的查詢,並從URL中取得限制和偏移量。然後將這些查詢傳遞給->get()方法來獲取結果。我想使用Eloquent而不是Query Builder來完成。

回答

1

這就是如何建立在口才查詢(我已經給使用多個的where子句爲例):

$result = ModelName::where('key_1', '=' , 'value_1') 
        ->where('key_2', '>', 'value_2') 
        ->take(4) 
        ->offset(2) 
        ->get() 

所述的紡絲()方法將結果的數目限制爲4偏移2。

http://laravel.com/docs/5.0/eloquent


更新

根據OP在這裏的問題https://laracasts.com/discuss/channels/general-discussion/eloquent-query-builder,我正在更新我的答案。

你可以做這樣的事情:

if($params) 
{ 
    $query = $this->model; 
    foreach($params['search'] as $param) 
    { 
     $query = $query->where($param['where'],'=',$param['value']); 
    } 

    if (isset($params['start'])) 
    { 
     $query = $query->offset($params['start']); 
    } 

    if(isset($params['count'])) 
    { 
     $query = $query->take($params['count']); 
    } 

    if (isset($params['sortColumn'])) 
    { 
     $ascending = $params['ascending'] == 'true' ? 'ASC' : 'DESC'; 
     $query = $query->orderBy($params['sortColumn'], $ascending); 
    } 

} 

$query->get(); 
+0

這不是我期待的。我知道這個解決方案。這是詳細的問題。 https://laracasts.com/discuss/channels/general-discussion/eloquent-query-builder – Chopra 2015-04-05 07:09:25

+0

@Chopra ..我更新了我的答案。請檢查它是否適合你! – Ymartin 2015-04-05 07:47:29

+0

謝謝。這像一個魅力。讚賞! – Chopra 2015-04-05 09:46:33

0

你需要再次到模型分配的職能是什麼結果。

您有:

if($params) 
    { 
     foreach($params['search'] as $param) 
     { 
      $this->model->where($param['where'],'=',$param['value']); 
     } 

     if (isset($params['start'])) 
     { 
      $this->model->offset($params['start']); 
     } 

     if(isset($params['count'])) 
     { 
      $this->model->take($params['count']); 
     } 

     if (isset($params['sortColumn'])) 
     { 
      $ascending = $params['ascending'] == 'true' ? 'ASC' : 'DESC'; 
      $this->model->orderBy($params['sortColumn'], $ascending); 
     } 

    } 

$this->model->get(); 

,你需要使用:

if($params) 
    { 
     foreach($params['search'] as $param) 
     { 
      $this->model = $this->model->where($param['where'],'=',$param['value']); 
     } 

     if (isset($params['start'])) 
     { 
      $this->model = $this->model->offset($params['start']); 
     } 

     if(isset($params['count'])) 
     { 
      $this->model = $this->model->take($params['count']); 
     } 

     if (isset($params['sortColumn'])) 
     { 
      $ascending = $params['ascending'] == 'true' ? 'ASC' : 'DESC'; 
      $this->model = $this->model->orderBy($params['sortColumn'], $ascending); 
     } 

    } 

$data = $this->model->get();