我有三个表:用户,部门和名称
我为用户','指定'创建了相应的模型。和'部门'表
表之间的关系是:
用户模型
public function department(){ return $this->belongsTo('Department'); }
public function designation(){ return $this->belongsTo('Designation'); }
-
部门模型
public function users(){ return $this->hasMany('User'); }
-
指定模型
public function users(){ return $this->hasMany('User'); }
现在,我将如何(以雄辩的方式)查询仅检索属于指定部门的所有用户(例如,'帐户'部门)。
我也尝试过加载,但由于有两种型号必须加入,所以更令人困惑。
我有一个如下代码,但现在正在工作。帮我找到错误
$users = new User;
$users = $users->department()->where('dept_code', '=', 'account')->get();
return View::make('staffs', compact('users'));
答案 0 :(得分:1)
以下是两种方法:
Department
侧$department = Department::where('dept_code', 'account')->first();
$users = $department->users;
User
侧使用whereHas
$users = User::whereHas('department', function($q){
$q->where('dept_code', 'account');
})->get();
(当然你也可以像$users = new User; $users->where(
一样使用它们,但我更喜欢静态调用语法,所以我在我的例子中使用它们)
答案 1 :(得分:0)
您定义与常量的关系。像这样:
用户模型
public function department(){
return $this->belongsTo('Department');
}
public function accounts_department(){
return $this->belongsTo('Department')->where('dept_code', 'account');
}
然后你就像这样使用它
$all_users = new User;
$all_users = $all_users->department()->get();
$account_only_users = new User;
$account_only_users = $account_only_users ->accounts_department()->get();