Кто-нибудь сталкивался с необработанными SQL запросами, имеющими разные результаты с eloquent?
Вот мое красноречивое возвращение значения:
BookingRoleSchedule::from('booking_role_schedules as a')
->whereExists(function ($q) {
return $q
->select(DB::raw(1))
->from('booking_role_schedules as b')
->where('a.id', '<>', 'b.id')
->whereRaw('not(a.start_date >= b.end_date or a.end_date <= b.start_date)');
})
->join('booking_role_schedule_talent as c', function($join) {
$join->on('a.id', '=', 'c.booking_role_schedule_id')
->whereExists(function($q) {
return $q
->from('booking_role_schedule_talent as d')
->select(DB::raw(1))
->where('c.booking_role_schedule_id', '<>', 'd.booking_role_schedule_id')
->whereRaw('not(c.user_id != d.user_id)');
});
})->get();
В то время как мой SQL запрос не возвращает никаких значение
select *
from `booking_role_schedules` as `a`
inner join `booking_role_schedule_talent` as `c` on `a`.`id` = `c`.`booking_role_schedule_id`
and exists(select 1
from `booking_role_schedule_talent` as `d`
where `c`.`booking_role_schedule_id` <> `d`.`booking_role_schedule_id`
and not (c.user_id != d.user_id))
where exists(select 1
from `booking_role_schedules` as `b`
where `a`.`id` <> `b`.`id`
and not (a.start_date >= b.end_date or a.end_date <= b.start_date))