Запрос через модель

 
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 161
Всем здравия!
Необходимо выбрать записи по дате публикации без учета времени. Классический запрос будет таким:

SELECT * FROM cms_con_posts ccp
WHERE DATE_FORMAT(ccp.date_pub, '%d.%m.%Y')='04.10.2018'

Как это реализовать с помощью методов модели? Вырисовывается что-то типа такого:

$item = $this->filterEqual('date_pub', '04.10.2018')->getItem('con_posts');

Но тип поля TIMESTAMP и содержит время, как его откинуть?
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Посетитель
small user social cms
Сообщений: 58
Может так:
Код PHP:
  1. $item = $this->filterEqual(date("d.m.y",'date_pub'), '04.10.2018')->getItem('con_posts');
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 161
@geminisf:

Может так:
Код PHP:
  1. $item = $this->filterEqual(date("d.m.y",'date_pub'), '04.10.2018')->getItem('con_posts');

Неа, получается так:

SELECT i.*
FROM cms_con_posts i
WHERE (i. = '04.10.2018')
LIMIT 1
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 161
решения нет?
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Посетитель
small user social cms
МедальПочетный донор проектаАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2393
Dimson, я бы дорисовал 00:00:00 и 23:59:59... И сделал фильтр filterBetween
Это если не гуглить.

А так идем в файл поля date.php и подсматриваем в методе applyFilter

Код PHP:
  1.  
  2. $date_start = date('Y-m-d', strtotime($value));
  3. $date_final = date('Y-m-d', strtotime($value)+60*60*24);
  4. return $model->filterBetween($this->name, $date_start, $date_final);
  5.  
З.ы. Это двойка, тут решение есть всегда v
Редактировалось: 1 раз (Последний: 14 марта 2019 в 14:07)
Виджеты, поля и компоненты для instantcms 2 http://www.zau4man.ru/
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 161
Zau4man:


Вопрос как раз в том, как через модель привести данные к нужному формату, например строковому, чтобы записи попали в выборку, как здесь:

SELECT * FROM cms_con_posts ccp
WHERE DATE_FORMAT(ccp.date_pub, '%d.%m.%Y')='04.10.2018'

а так получаем

SELECT i.*
FROM cms_con_posts i
WHERE (i.date_pub BETWEEN '04.10.2018' AND '05.10.2018')
LIMIT 1

и пустой результат, т.к. поле date_pub в формате TIMESTAMP и содержит помимо даты еще и время

00:00:00 и 23:59:59 дорисовал, но не спасло :(
Редактировалось: 4 раз (Последний: 14 марта 2019 в 15:26)
Рекомендую хостинг с крутой панелью, бесплатными сертификатами и другими плюшками
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2372
Код SQL:
  1. $item = $this->filterDateYounger('date_pub', '2018-10-03')->filterDateOlder('date_pub', '2018-10-05')->getItem('con_posts');
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.