如何仅检索那些在laravel4中通过所需标准的对象及其相关模型?

时间:2015-01-03 08:17:55

标签: laravel laravel-4 eloquent

我有三个表:用户,部门和名称

我为用户','指定'创建了相应的模型。和'部门'表

表之间的关系是:

  

用户模型

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'));

2 个答案:

答案 0 :(得分:1)

以下是两种方法:

1。从Department

$department = Department::where('dept_code', 'account')->first();
$users = $department->users;

2。从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();