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() 
関連する問題