Несколько условий в where

пытаюсь сделать выборку
[[!pdoPage?
                         &parents=`9`
                         &depth=`2`
                         &tpl=`tpl.tpl`
                         &sortby=`pagetitle`
                         &sortdir=`ASC`
                         &tvPrefix=``
                         &includeTVs=`test, NameReal, TC`
                         &where=`["
                         TVtest.value = '5541' OR TVtest.value = '5172'
                         "]`
                         &limit=`30`
                        ]]
выдает все ресурсы родителя 9, в логах пишет
0.0565951: Added where condition: 0=, modResource.parent
и так далее… что не так?
PS использую чистый SQL потому что условий может быть больше 2, а при JSON они все равно обрежутся до 2 потому что ключ одинаковый. По крайней мере у меня обрезаются, если можно не обрезать то это тоже вариант.
Андрей
27 марта 2018, 18:09
modx.pro
4 330
0

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

Володя
27 марта 2018, 21:21
0
некорректный json
["
                         TVtest.value = '5541' OR TVtest.value = '5172'
                         "]
    Андрей
    27 марта 2018, 21:30
    0
    так в логах вообще пропало упоминание про условие
    0.0556102: Added where condition: modResource.parent:IN
    синтаксис я брал из этого поста, там одинарные кавычки были
      Володя
      27 марта 2018, 21:34
      0
      синтаксис я брал из этого поста, там одинарные кавычки были
      синтаксис верный, но json некорректный.
      В том же посте есть упоминание онлайн сервиса для проверки json.
      Проверь, исправь ошибку и все.
        Андрей
        27 марта 2018, 21:50
        0
        на тот сервис у меня антивирус ругается, но да, нужно было вытянуть в одну строку
        &where=`["TVtest.value = '5541' OR TVtest.value = '5172'"]`
        теперь так
        0.0597908: Added where condition: 0=TVtest.value = '5541' OR TVtest.value = '5172', modResource.parent
        и выборка теперь дает пустой результат вместо 100%, а в дочерних документам точно есть удовлетворяющие условию.
          Андрей
          27 марта 2018, 22:21
          +1
          в итоге вот рабочий код, может кому поможет
          [[!pdoPage?
                                   &parents=`9`
                                   &depth=`2`
                                   &tpl=`tpl.tpl`
                                   &sortby=`pagetitle`
                                   &sortdir=`ASC`
                                   &tvPrefix=``
                                   &includeTVs=`test, NameReal, TC`
                                   &where=`["test = '5541' OR test = '5172'"]`
                                   &limit=`30`
                                  ]]
            DeleteMePlease
            28 марта 2018, 12:11
            0
            еще можно было написать
            &where=`{"test":"5541","OR:test":"5172"}` 
            или
            &where=`{"test:IN":['5541','5172']}`
            
              Андрей
              28 марта 2018, 18:43
              0
              первый вариант годится только для 2 условий, при большем количестве будет обрезаться, по ссылке выше это разбирали, а мне нужно чтобы условий было неограниченное количество, ну до 20 по крайней мере точно.
    Андрей
    27 марта 2018, 21:48
    0
    .
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8