Modx XPDOQuery Как группировать условия ИЛИ после условия И
Я пытаюсь написать XPDOQuery, чтобы получить в результате SQL выглядит следующим образом:
SELECT *
FROM `table` AS `t`
WHERE (
`t`.`id` >= 1
AND `t`.`grade` = '3003'
AND (`t`.`finish` LIKE '120'
OR `t`.`finish` LIKE '180'
OR `t`.`finish` LIKE '320'
OR `t`.`finish` LIKE '600'
)
)
в основном мне нужен набор результатов, где оценка равна 3003, а результат - любое из 120 180 320 600 значений.
В настоящее время я просто перебираю массив отделок, чтобы получить условия where:
$arrayWhere[] = array('id:>=' => 1);
$arrayWhere[] = array('grade' => 3003);
$finishesLong = array('120','180','320','600');
foreach($this->finishesLong as $finish){
$arrayWhere[] = array('finish:LIKE' => $finish);
}
//Then inserting that into the query
$criteria = $this->modx->newQuery('Data');
$criteria->where($arrayWhere);
$criteria->limit($limit, $offset);
$data= $this->modx->getCollection('Data', $criteria);
Как я могу сгруппировать результаты OR с помощью XPDO?
ОБНОВЛЕНИЕ Я решил решить эту проблему с помощью регулярного выражения, но я думаю, что ответ на первоначальный вопрос все еще будет полезен для сообщества:
$regex = implode('|', $this->finishesFlat);
$arrayWhere[] = array('finish:NOT REGEXP' => $regex);