2017-01-13 12 views
1

モデル関連のモデル関係をクエリするときに、Laravel/Eloquentで関連するクエリを実行する最良の方法は何ですか?例えばLaravel/Eloquent関連検索を行う最良の方法

: 書籍多くのシート記載 シート記載は、私は与えられた出版社からのすべての書籍を見つけたい出版社

を持っています。

Books:where('printings.publishers', '=', $id); 

これを設定する方法についてのアドバイスはありますか?

おかげ

更新:

が、「魔法」ゲッターを作成するために、hasManyの/ ManyThroughを使用して、モデルにこれを設定することはできませんか?

モデルがこの

ブックス のように見える - ID - タイトル

印刷 - ID は - book_id - PUBLISHER_ID - AUTHOR_ID

出版社 - ID -

に名前を付けます

著者 - ID - これは、あなたが一般的にそれを行う方法である

答えて

0

に名前を付ける:

Books::with(['printings' => function ($q) use ($id) { 
    // Query on the relationship 
    $q->where('publishers', $id); 
}])->get(); 

編集:

私は質問を誤解。 @AlexeyMezeninが答えたとおり、あなたが探しているものは->whereHasです。

Books::whereHas('printings', function ($q) use ($id) { 
    // Query on the relationship 
    $q->where('publishers', $id); 
})->get(); 
1

最初に正しい関係を設定してください。 Bookには多くのPrintingがあります。 PrintingPublisherに属します。

Book::whereHas('printings', function($q) use($id) { 
    $q->where('publisher_id', $id); 
})->get(); 
関連する問題