Сложный запрос в where для pdoResources

Приведённый код (ниже) прекрасно работает, НО

[[pdoResources?
    &parents=`2`
    &depth=`0`
    &tpl=`TestListRowTpl`
    &includeTVs=`tvimage,nacpr,konpr`
    &where=`["konpr >= now() AND nacpr<=now()"]`
    ]]
При попытке дописать ещё пару условий выводится совершенно не то, что надо (весь список, вместо выбранных)

[[pdoResources?
    &parents=`2`
    &depth=`0`
    &tpl=`TestListRowTpl`
    &includeTVs=`tvimage,nacpr,konpr`
    &where=`["konpr >= now() AND nacpr<=now() 
    OR konpr>=DATE_ADD(NOW(),INTERVAL 7 DAY) 
    AND nacpr<=DATE_ADD(NOW(),INTERVAL 7 DAY)"]`
    ]]
По отдельности, как не странно, всё работает…

Проблема, (как я понимаю) в том, что для where нужно сформировать json-строку (если where простой — можно обойтись чистым sql-кодом в квадратных скобках)

Подскажите, пожалуйста, пример такой json-строки с условиями A and B or C and D?

Где-то откопал код (ниже), но я не понимаю, к сожалению, что делать, если условий много:
для условия width=15 and height=10 or width=25 json-код такой
{"0":{"width :=":"15","AND:height:=":"10"},"OR:width :=":"25"}

А если будет ещё пару условий?

Уперся, реально не знаю — что делать
Игорь
06 февраля 2020, 15:48
modx.pro
380
0

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

Сергей
06 февраля 2020, 16:29
0
A and B or C and D
— странное условие… Может быть,
(A and B) or (C and D)
?

Или pdoResources умеет расставлять приоритет между операндами?
    Игорь
    06 февраля 2020, 16:39
    0
    Меня вообще-то интересует (A and B) or (C and D) or (E and F and G) :)
    ПОЧТИ все примеры в интернете — либо одно условие, либо два.
      Сергей
      06 февраля 2020, 16:46
      0
      Вооот, а у Вас скобок не хватает в условии. Попробуйте так:
      &where=`["( konpr >= now() AND nacpr<=now() ) OR ( konpr>=DATE_ADD(NOW(),INTERVAL 7 DAY) AND nacpr<=DATE_ADD(NOW(),INTERVAL 7 DAY) )"]`
      Пробелы поставил для удобства. Не уверен, что сниппет поймет такое разделение операндов. Но, думаю, смысл Вы поняли, и попробовать можно :)
        Игорь
        06 февраля 2020, 16:51
        0
        я уже так пробовал — выводятся все записи, а не нужные по условиям…
          Сергей
          07 февраля 2020, 11:57
          0
          Хмм… Тогда тоже жду решение.
    Сергей Шлоков
    08 февраля 2020, 15:44
    +2
    Включаете параметр showLog, получаете сформированный sql запрос и анализируете. Думаю, удивитесь, когда увидите, что получилось. Поиграться с ним можно в phpMyAdmin или можно поставить dbAdmin.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6