I would like to select all the events except those whose pivot table id is equal to 6 (and no doubt that other id will be added).
I use this code :
$query = Reservation::
select('types.name as typeName', 'evenements.name','evenements.mnemonique', 'evenement_types.total_hours',DB::raw('SUM(reservations.nombre_heures ) as nombre_heures_encode'))
->leftJoin('reservation_evenement_types','reservation_evenement_types.reservation_id',"=","reservations.id")
->leftJoin('evenement_types','evenement_types.id','=','reservation_evenement_types.evenement_type_id')
->leftJoin('types','types.id','=','evenement_types.type_id')
->leftJoin('evenements','evenements.id','=','evenement_types.evenement_id' )
->whereNotNull('reservation_evenement_types.evenement_type_id')
->whereNotIn('evenement_types.evenement_id', [6])
->where('reservations.horaire_id',$r->horaires)
->groupBy('types.name', 'evenements.name','evenements.mnemonique', 'evenement_types.total_hours')->get();
And mainly this :
->whereNotIn('evenement_types.evenement_id', [6])
the generated query is as follows:
Select `types`.`name` as `typeName`, `evenements`.`name`, `evenements`.`mnemonique`, `evenement_types`.`total_hours`, SUM(reservations.nombre_heures ) as nombre_heures_encode from `reservations` left join `reservation_evenement_types` on `reservation_evenement_types`.`reservation_id` = `reservations`.`id` left join `evenement_types` on `evenement_types`.`id` = `reservation_evenement_types`.`evenement_type_id` left join `types` on `types`.`id` = `evenement_types`.`type_id` left join `evenements` on `evenements`.`id` = `evenement_types`.`evenement_id` where `reservation_evenement_types`.`evenement_type_id` is not null and `evenement_types`.`evenement_id` not in (6) and `reservations`.`horaire_id` = '1' group by `types`.`name`, `evenements`.`name`, `evenements`.`mnemonique`, `evenement_types`.`total_hours`
This is important :
and `evenement_types`.`evenement_id` not in (6)
but events with id 6 continue to display
Do you have any idea please ?
Try
->where('evenement_types.evenement_id','!=', 6)