Laravel Eloquent Где между временными метками с разделителями-запятыми? - PullRequest
0 голосов
/ 09 октября 2018

enter image description hereУчитывая изображение выше ... используя Eloquent от Laravel - как я могу найти определенный диапазон дат, чтобы вернуть строки, которые находятся в этом диапазоне?

Я знаю, что в Laravel есть функция whereBetween, которая работает с обычными полями даты, но, поскольку это временные метки, я понимаю, что мне придется использовать что-то вроде where('dates', '>=', $startTimestamp) и where('dates', '<=', $endTimestamp), но я бытакже должно быть, это относится к каждой дате, взорванной из столбца?

Спасибо за помощь, ребята!

1 Ответ

0 голосов
/ 09 октября 2018

Несмотря на то, что это может быть плохой настройкой базы данных, иногда все просто нужно делать так, как они это делают в настоящее время - по деловым причинам, из-за опозданий или чего-то еще;неприглядное исправление может быть лучше, чем полный капитальный ремонт, особенно в тех случаях, когда система небольшая и останется маленькой, не требуя переосмысления скорости обработки.

Вот решение предлагаемого вопроса с использованием объединения таблиц 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);

Оставьте это здесь вместо удаления вопроса, поскольку это может кому-то помочь.

Будущий человек: в вашем случае - если вы можете вместо этого переделать схему базы данных, как предлагалось в комментариях к моему вопросу, то сделайте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...