我的数据模型是这样的: 用户>办公室>组织
这是我的模特
class Organization extends Model {
protected $table = 'organizations';
public function offices()
{
return $this->hasMany('App\Models\Office');
}
public function users()
{
return $this->offices()->users();
}
....
所以..我想从一个组织(所有办公室)获得所有用户。 但我不知道该怎么办
$this->offices()->users();
(避免用户手动收集或映射来执行此操作)
谢谢!
答案 0 :(得分:2)
所以,你有组织ID。您可以使用whereHas()
加载所有用户:
$users = User::whereHas('office', function ($q) use ($organizationId) {
$q->where('organization_id', $organizationId);
})
->get();
确保在office()
模型中正确定义User
关系:
public function office()
{
return $this->belongsTo('App\Office');
}
或者,您可以定义hasManyThrough()
关系:
public function users()
{
return $this->hasManyThrough('App\Office', 'App\User');
}
并使用它:
$organization->users()