2017-06-08 33 views
1

我的數據模型是這樣的: 用戶>辦公室>組織Laravel雄辯 - 獲取子關係模型的所有記錄

這是我的模型

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

(避免用戶手動集合或映射到做到這一點)

謝謝!

回答

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()