2016-11-04 10 views
1

私はEmployersEmployeesの間に多対多の関係を持っています。私はどのように仕事をしているのかを問う方法を決定しようとしています一連の企業。雄弁な多対多の関係で複数のモデルから選択する

例えば私が「産業株式会社」と「シャベル無制限」の全従業員を選択することを望むかもしれない

Example Data Relation

私は個別にこれらのクエリを実行した場合、私はなります[サムネイサン ]工業株式会社、および[Koryネイサン]シャベルのための無制限のため

私はこれらを選択することができ個別に結合してから結合しますが、複製されたNathanが得られます。
[サムネイサンKoryネイサン]

[サムネイサンKory]結果を返すために、このクエリを作成する方法はありますか?


私はたくさんのことを試しましたが、私が試したことは何も私が必要とするものを正確に得ることではありません。

これは私が雇用

Employer::find(2)->employees()->get() 

から必要なものを私に取得し、これは私に二つ以上の雇用

Employer::::findMany([2,4]); 

を得るでしょう。しかし、私はできません単に

Employer::::findMany([2,4])->employees()->get(); 

findMany([...])はを返すため

答えて

2

ええ、whereHasを使用します。

$employer_ids = [1, 2, 3]; // These are ids of employers you want to get all employees for. 
$employees = Employee::whereHas('employers', function($q) use ($employer_ids) { 
    $q->whereIn('employer_id', $employer_ids); 
});