У меня есть запрос Eloquent, в котором я объединяю несколько таблиц, а затем применяю к этому запросу разные фильтры, но после одного фильтра исходный подзапрос был изменен с первым фильтром в другом фильтре.
это оригинальный запрос:
$circle = DB::table('circles')
->joinSub($member, 'member', function ($join) {
$join->on('circles.id', '=', 'member.circle_id');
})->joinSub($place, 'place', function ($join) {
$join->on('circles.place_id', '=', 'place.placeID');
})->joinSub($dep, 'dep', function ($join) {
$join->on('department_id', '=', 'depID');
})->where('use_classification', UseClassificationEnum::USES)
->select('id', 'circle_name', 'circle_code', 'department_name', 'place_name', 'numMem', 'leader');
затем примените различные фильтры
$current_circle = session('circle.id');
$circle_active = $circle->where('id', $current_circle)->first();
$circle_other = $circle->where('id', '<>', $current_circle)->get();
В запросе $circle_other
исходный $circle
был включен с where('id', $current_circle)
, поэтому он ничего не дает.
Если я поставлю $circle_active
и $circle_other
в обратном порядке, то последующее ничего не даст.
Я не хочу повторять запрос только для применения разных фильтров.
Где я неправ? Пожалуйста, помогите.