Несмотря на то, что это может быть плохой настройкой базы данных, иногда все просто нужно делать так, как они это делают в настоящее время - по деловым причинам, из-за опозданий или чего-то еще;неприглядное исправление может быть лучше, чем полный капитальный ремонт, особенно в тех случаях, когда система небольшая и останется маленькой, не требуя переосмысления скорости обработки.
Вот решение предлагаемого вопроса с использованием объединения таблиц MySQL, выбирая из этого присоединяющегося ответа.Это также написано на Laravel, отсюда и статическая функция DB.
$temp = DB::select(DB::raw("select
leave_entries.id,
SUBSTRING_INDEX(SUBSTRING_INDEX(leave_entries.dates, ',', numbers.n), ',', -1) dates
from
(select 1 n union all
select 2 union all select 3 union all
select 4 union all select 5) numbers INNER JOIN leave_entries
on CHAR_LENGTH(leave_entries.dates)
-CHAR_LENGTH(REPLACE(leave_entries.dates, ',', ''))>=numbers.n-1
where uid = {$uid}
AND dates >= {$start_timestamp}
AND dates <= {$end_timestamp}
order by
id, n"));
// Return the resulting table:
dd($temp);
Оставьте это здесь вместо удаления вопроса, поскольку это может кому-то помочь.
Будущий человек: в вашем случае - если вы можете вместо этого переделать схему базы данных, как предлагалось в комментариях к моему вопросу, то сделайте это.