orm - Laravel eloquent: get data with model wherePivot equal to custom field -
i have eloquent object performer has albums , albums have images
here setup:
model performer->albums():
public function albums() {   return $this->belongstomany('album','performer_albums','performer_id','album_id'); } model album->images()
public function images() {   return $this->belongstomany('image','album_images','album_id','image_id')->withpivot(['type','size']); } i have performer object stored such:
$performer = performer::where...->first(); now need performer's albums images size 'large'
so avoid nesting queries, can use with()?
i tried
$performer->albums()           ->with('images')           ->wherepivot('size','large')           ->get(); but laravel tells me it's trying use wherepivot performer-album relationship (m-2-m)
ps. aware can this,
$performer = performer::with('albums')                       ->with('albums.images')                       ->.....-conditions additional fields in album_images....                       ->get(); but question remains same.
you need eager load constraints:
$performer->albums()   ->with(['images' => function ($q) {       $q->wherepivot('size','large');   }])   ->get(); and btw, no, can't this:
performer::with('albums')   ->with('albums.images')   ->.....-conditions additional fields in album_images....   ->get(); instead do:
performer::with(['albums.images' => function ($q) {      $q->   .....-conditions additional fields in album_images....   }])->get(); 
Comments
Post a Comment