Конструкция (...AND...) OR (...AND...) в &where

Добрый день.

В параметр &where pdoResources передается json-массив параметров для фильтрации. Как должен выглядеть массив следующего вида?

(условие1 LIKE '%%' или условие2 LIKE '%%' или условие3 LIKE '%%') И (условие4 LIKE '%%' или условие5 LIKE '%%' или условие6 LIKE '%%')

Оф документация тут docs.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where, но в ней не написано вроде бы…

Спасибо!
Михаил
20 июля 2017, 16:44
modx.pro
2 993
0

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

Михаил
21 июля 2017, 08:40
0
$query = $xpdo->newQuery('Box');
$query->where(array(
   array(
      'width:=' => 15, // note that adding 'AND:' or 'OR:' in front of the attribute, an operator must be used ':='
      'OR:width:=' => 10
   ),
   array(
      'AND:height:>=' => 10,
      'AND:height:<=' => 15
   )
));
$boxes = $xpdo->getCollection('Box',$query);
    Михаил
    21 июля 2017, 11:16
    0
    Спасибо за ответ.
    А разве это сработает, если будет 3-4-5 условий? Потому что ключ массива получается одинаковый, см. ниже. Об этом есть в этом комменте modx.pro/howto/6198-complex-selection-on-the-tv-settings-in-getresources/#comment-44003
    array(
          'width:=' => 15, // note that adding 'AND:' or 'OR:' in front of the attribute, an operator must be used ':='
          'OR:width:LIKE' => '%10%',
          'OR:width:LIKE' => '%15%'
       )

    А еще вопрос, как такое условие уложить в json, чтобы использовать в &where от pdoResources?
    Николай Савин
    22 июля 2017, 14:25
    0
    Вы можете написать в условии чистый SQL, выделив его прямыми скобками [ ]

    $query = $xpdo->newQuery('Box');
    $query->where(['width' = 15 OR 'width' = 10]
    $boxes = $xpdo->getCollection('Box',$query);
    Можно использовать любые условия или SQL операторы.
    А вообще использовать XPDO запросы считается неправильным, они создают лишнюю нагрузку.
    Лучше использовать методы pdoTools getCollection и getArray
      Михаил
      24 июля 2017, 08:31
      0
      Спасибо особенно за чистый sql =))
      Насчет xpdo, так я и не пытаюсь его использовать, я ищу самое простое решение для моей задачи, а задача сделать выборку со сложным фильтром. Почему-то в документации и примерах по pdoResources примеры только простые. Хотя моя задача — стандартная для обычного фильтра по параметрам (несколько из производителей И несколько из цветов).
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4