2015-10-05 83 views
2

我用來做這樣的事情在代碼點火器如何鏈laravel查詢5

$this->db->select('*'); 
$this->db->from($this::DB_TABLE); 
if ($role == "manager") { 
    $this->db->where('is_manager',1); 
} 
if ($role == "staff") { 
    $this->db->where('is_staff',1); 
} 
$this->db->where('is_active', 1); 
$this->db->order_by('last_name', 'asc'); 
$user_set = $this->db->get(); 
return $user_set; 

我怎麼能寫在laravel 5.我新laravel這樣一個類似的查詢。

回答

2

如果要有條件地更改查詢參數是這樣的:

$query = Model::select('*') 
if ($role == "manager") { 
    $query = $query->where('is_manager',1); 
} 
if ($role == "staff") { 
    $query = $query->where('is_staff',1); 
} 
$user_set = $query->where('is_active', 1)->orderBy('last_name', 'asc')->get(); 

return $user_set; 

但我認爲這會是這樣更簡潔(沒有經過測試的,但我認爲這會工作):

return Model::select('*') 
    ->where('is_manager', $role == 'manager' ? 1 : 0) 
    ->where('is_staff', $role == 'staff' ? 1 : 0) 
    ->where('is_active', 1) 
    ->orderBy('last_name', 'ASC') 
    ->get(); 
+0

謝謝@jcorry。我會嘗試一下,看看 –

+0

謝謝@jcorry代碼工作得很好。謝謝 –

+0

否定條件與省略不一樣 – chyno

3

是的,但我們有這個漂亮的雄辯ORM,在Codeigniter中並不存在。

現在它看起來像:

Model::where('is_manager', 1)->where('is_active', 1)->orderBy('last_name', 'DESC')->get() 

這是相似的,但WAY更強大。

研究Eloquent docs並查看Laracasts教程中的一些基本示例。

+1

[查詢生成器文檔](http://laravel.com/docs/5.1/queries)也應該作爲Eloquent的基礎來讀取。 – Bogdan

+0

謝謝jcorry。我知道如何修改我的代碼以處理您的查詢。有可能建立一個查詢併爲其添加條件,如「if」 –

+0

哦,是的,你可以...我會添加另一個答案 – jcorry