Выбрать диапазон дат в pdoResources
Не могу выбрать диапазон дат.
В выводе Формат даты tv поля указал %s
В чанке выводит в правильном формате 1467331200,
а в снипете реагирует только на такой формат 2016-07-01 03:00:00
Если сделаю такой запрос например:
То все работает, а такой не работает:
Подскажите, как правильно сделать, а то я кучу времени на этот пустяк убил (
[[!pdoResources?
&parents=`2`
&depth=`10`
&tpl=`item`
&includeTVs=`timeEvent`
&processTVs=`1`
&where=`{"timeEvent:>=,<=:AND":[1467331200,1498867200]}`
]]
В выводе Формат даты tv поля указал %s
В чанке выводит в правильном формате 1467331200,
а в снипете реагирует только на такой формат 2016-07-01 03:00:00
Если сделаю такой запрос например:
[[!pdoResources?
&parents=`2`
&depth=`10`
&tpl=`item`
&includeTVs=`timeEvent`
&processTVs=`1`
&where=`{"timeEvent":"2016-07-01 03:00:00"}`
]]
То все работает, а такой не работает:
[[!pdoResources?
&parents=`2`
&depth=`10`
&tpl=`item`
&includeTVs=`timeEvent`
&processTVs=`1`
&where=`{"timeEvent":"1467331200"}`
]]
Подскажите, как правильно сделать, а то я кучу времени на этот пустяк убил (
Поблагодарить автора
Отправить деньги
Комментарии: 2
У Вас дата в базе хранится в виде 2016-07-01 03:00:00, а Вы пытаетесь фильтровать по дате в Unix-формате.
Если в лоб, то решение следующее:
1. Сделать еще одно поле timeUnix типа текст.
2. Сделать плагин на событие OnDocFormSave, который будет брать дату из поля timeEvent, переводить ее в нужный формат и записывать в поле TV timeUnix:
3. Выборку в pdoResources cделать уже через этот новый TV:
Если в лоб, то решение следующее:
1. Сделать еще одно поле timeUnix типа текст.
2. Сделать плагин на событие OnDocFormSave, который будет брать дату из поля timeEvent, переводить ее в нужный формат и записывать в поле TV timeUnix:
<?php
$res = $modx->getObject('modResource', $id);
$date = $res->getTVValue('timeEvent');
if(empty($date)) return '';
$time = strtotime($date);
$res->setTVValue('timeUnix', $time);
3. Выборку в pdoResources cделать уже через этот новый TV:
&where=`{"timeUnix:>=,<=:AND":[1467331200,1498867200]}`
Я понял проблему. Пробовал как то так
&where=`{"UNIX_TIMESTAMP(timeEvent):>=,<=:AND":[1467331200,1498867200]}`
то же не выходит, наверное правда придется еще одно tv поле создавать
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.