2015-10-05 98 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