Выборка документов Сейчас, До, После

Добрый день! Подскажите как сделать выборку через where с AND. Есть документ в нём 2 тв с датами, на выходе ТВ даты в %s (в секундах)

У меня три вкладки по статусам: Идёт, Прошло, Предстоит.
Для «Идёт» использую
&where=`{"endDateEvent:>":"[[!date]]","AND:startDateEvent:<":"[[!date]]"}`
Прошло
&where=`{"endDateEvent:<":"[[!date]]","AND:startDateEvent:<":"[[!date]]"}`
Предстоит
&where=`{"endDateEvent:>":"[[!date]]","AND:startDateEvent:>":"[[!date]]"}`
Но во всех трёх выборках получается так что все ресурсы выводятся одинаково не исполняю условия. Подскажите где допущенной мной ошибка или подскажите правильный вариант. Заранее благодарен.
Виктор
07 декабря 2015, 07:27
modx.pro
2
1 277
0

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

Сергей Шлоков
07 декабря 2015, 11:35
0
Для начала включите &showLog и посмотрите какой получается SQL запрос.
    Виктор
    07 декабря 2015, 15:40
    0
    Это по выборке «Идёт» — рез-ов вообще нет, хотя 1 ресурс с true есть.
    0.0003550: pdoTools loaded
    0.0000861: xPDO query object created
    0.0009770: Included list of tvs: endDateEvent, startDateEvent
    0.0008130: leftJoined modTemplateVarResource as TVenddateevent
    0.0007360: leftJoined modTemplateVarResource as TVstartdateevent
    0.0010591: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
    0.0000300: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `endDateEvent`
    0.0000229: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `startDateEvent`
    0.0001969: Replaced TV conditions
    0.0011549: Processed additional conditions
    0.0024099: Added where condition: `TVenddateevent`.`value`:>=1197719700, AND:`TVstartdateevent`.`value`:<=1197719700, modResource.parent:IN(26,56,57,58), modResource.published=1, modResource.deleted=0
    0.0000660: Replaced TV conditions
    0.0003560: Sorted by modResource.publishedon, DESC
    0.0000110: Limited to 10, offset 0
    0.0007200: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVenddateevent`.`value`, '') AS `endDateEvent`, IFNULL(`TVstartdateevent`.`value`, '') AS `startDateEvent` FROM `np20PR_site_content` AS `modResource` LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVenddateevent` ON `TVenddateevent`.`contentid` = `modResource`.`id` AND `TVenddateevent`.`tmplvarid` = 10 LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVstartdateevent` ON `TVstartdateevent`.`contentid` = `modResource`.`id` AND `TVstartdateevent`.`tmplvarid` = 9 WHERE  ( `TVenddateevent`.`value` > '1197719700' AND `TVstartdateevent`.`value` < '1197719700' AND `modResource`.`parent` IN (26,56,57,58) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
    0.0013900: SQL executed
    0.0001261: Total rows: 0
    0.0000260: Rows fetched
    0.0000482: Prepared and processed TVs
    0.0000021: Returning processed chunks
    0.0095479: Total time
    19 922 944: Memory usage
      Сергей Шлоков
      07 декабря 2015, 16:34
      0
      Ну теперь в phpMyAdmin пробуйте поиграть с запросом. Проверяйте where.
      Какое значение в `TVenddateevent`.`value`? Тоже в секундах? Выведите оба значения для проверки.
      Дальше. Значение '1197719700' = 15.12.2007. Т.е. дата начала должна быть меньше 15.12.2007, а дата окончания больше.
      Дальше проверьте без родителей.
        Виктор
        08 декабря 2015, 08:41
        0
        Поправил сниппет [[!date]] дата на вывод актуальная стала. Но AND не отрабатывает, если условие OR то выход результатов есть но они не соответствуют ожиданиям. Если в where будет одно и двух условий то выборка нормальная. Лог с нормальным сниппетом.
        0.0002842: pdoTools loaded
        0.0000789: xPDO query object created
        0.0007520: Included list of tvs: endDateEvent, startDateEvent
        0.0197010: leftJoined modTemplateVarResource as TVenddateevent
        0.0005949: leftJoined modTemplateVarResource as TVstartdateevent
        0.0006568: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
        0.0000160: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `endDateEvent`
        0.0000160: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `startDateEvent`
        0.0001221: Replaced TV conditions
        0.0008650: Processed additional conditions
        0.0015941: Added where condition: `TVenddateevent`.`value`:>=1449552908, AND:`TVstartdateevent`.`value`:<=1449552908, modResource.parent:IN(26,56,57,58), modResource.published=1, modResource.deleted=0
        0.0000648: Replaced TV conditions
        0.0002379: Sorted by modResource.publishedon, DESC
        0.0000060: Limited to 10, offset 0
        0.0004930: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVenddateevent`.`value`, '') AS `endDateEvent`, IFNULL(`TVstartdateevent`.`value`, '') AS `startDateEvent` FROM `np20PR_site_content` AS `modResource` LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVenddateevent` ON `TVenddateevent`.`contentid` = `modResource`.`id` AND `TVenddateevent`.`tmplvarid` = 10 LEFT JOIN `np20PR_site_tmplvar_contentvalues` `TVstartdateevent` ON `TVstartdateevent`.`contentid` = `modResource`.`id` AND `TVstartdateevent`.`tmplvarid` = 9 WHERE  ( `TVenddateevent`.`value` > '1449552908' AND `TVstartdateevent`.`value` < '1449552908' AND `modResource`.`parent` IN (26,56,57,58) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
        0.0009298: SQL executed
        0.0001011: Total rows: 0
        0.0000160: Rows fetched
        0.0000260: Prepared and processed TVs
        0.0000021: Returning processed chunks
        0.0257952: Total time
        19 398 656: Memory usage
          Сергей Шлоков
          08 декабря 2015, 09:00
          0
          Внимательно посмотрите на цифры. Событие идет — дата начала больше текущей даты. Т.е. это событие «предстоит», а не «идет».
            Виктор
            08 декабря 2015, 09:23
            0
            Я.Скрин
            Всё та же балалайка( Возможно у AND есть метасимвол? т.к OR работает.
              Сергей Шлоков
              08 декабря 2015, 09:29
              0
              Если есть возможность, киньте доступ в личку, гляну.
                Виктор
                08 декабря 2015, 09:37
                0
                Отправил
                  Сергей Шлоков
                  08 декабря 2015, 09:39
                  0
                  Ok.
                    Сергей Шлоков
                    08 декабря 2015, 10:38
                    +2
                    Сделал, проверяйте.
                      Виктор
                      08 декабря 2015, 10:52
                      0
                      Благодарю, за помощь.
                        Серый
                        13 июня 2019, 16:51
                        0
                        Опубликуйте плз рабочий вариант кода, ибо предстоит та же история) Спасибо!
                        Виктор
                        13 июня 2019, 19:48
                        0
                        У меня давно уже этого проекта нету, так же как и доступа к проду. И тут лучше between использовать
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    13