php - Laravel multiple table join saved to a variable and running a foreach against it (search function) -
i presently have 3 tables: shows, genres , show_genre (associates two). have search form submits series of checkboxes values array based on genres selected. presently want associate shows table , genres table variable , run query against once every genre checkbox selected. then, once selection filtered, can display resulting show objects matched users parameters.
my present setup following
public function searchshows(searchrequest $request) { //$showswithgenres give collection inside collection can't seem access values without doing bunch of ugly code using count() in loop $showswithgenres = show::with('genres')->get(); $genres = $request->name; if(isset($genres)) { foreach($genres $genre) { //iterate against selection repeatedly reducing number of results } } }
thanks.
you should use wherehas()
, wherein
.
perhaps should it:
$shows = show::wherehas('genres', function($q) use($genre_ids) { $q->wherein('id', $genre_ids); })->get();
edit try this, i'm unsure performance.
$query= show::query(); foreach($genre_ids $id){ $query->wherehas('genres', function($q) use($id) { $q->where('id', $id); }) } $shows = $query->get();
Comments
Post a Comment