Hi @loomix
You should wrap your orWhere stataments in a callback:
$events = Toolplan::query()
->select('id', 'eventId', 'resourceId', 'title', 'start', 'end')
->where(function ($query) use ($start, $end) {
$query
->where(function ($q) use ($start, $end) {
$q->whereDate('start', '>=', $start)->whereDate('end', '<=', $end);
})
->orWhere(function ($q) use ($start, $end) {
$q->whereDate('start', '<=', $start)->whereDate('end', '>=', $end)
});
->orWhere(function ($q) use ($start, $end) {
$q->whereDate('end', '>=', $start)->whereDate('end', '<=', $end);
});
->orWhere(function ($q) use ($start, $end) {
$q->whereDate('start', '>=', $start)->whereDate('start', '<=', $end);
});
})
->whereIn('eventId', $eventIds)
->get();
This should return rows if the query matches at least one of the date conditions AND the Event ID condition (both are required).