Search code examples
laraveleloquentlaravel-7

Not displaying a event with a certain id (array of id)


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 ?


Solution

  • Try

      ->where('evenement_types.evenement_id','!=', 6)