我曾经在代码Igniter
中做过类似的事情 $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的新手。
答案 0 :(得分:3)
是的,但是我们拥有Codeigniter中不存在的非常棒的Eloquent ORM。
现在看起来像:
Model::where('is_manager', 1)->where('is_active', 1)->orderBy('last_name', 'DESC')->get()
它类似,但更强大。
研究Eloquent docs并查看Laracasts教程中的一些基本示例。
答案 1 :(得分: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();