Выбрать диапазон дат в pdoResources

Не могу выбрать диапазон дат.

[[!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"}`    
]]


Подскажите, как правильно сделать, а то я кучу времени на этот пустяк убил (
Вася
01 июля 2016, 00:05
modx.pro
1 676
0
Поблагодарить автора Отправить деньги

Комментарии: 2

Павел Романов
01 июля 2016, 11:39
1
+1
У Вас дата в базе хранится в виде 2016-07-01 03:00:00, а Вы пытаетесь фильтровать по дате в Unix-формате.
Если в лоб, то решение следующее:
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]}`
    Вася
    01 июля 2016, 12:03
    0
    Я понял проблему. Пробовал как то так
    &where=`{"UNIX_TIMESTAMP(timeEvent):>=,<=:AND":[1467331200,1498867200]}`
    то же не выходит, наверное правда придется еще одно tv поле создавать
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2