Добрый день уважаемые! Третий день уже бьюсь над проблемой, все облазил и перелазил ничего не помогает:
Имеется таблица MIGXDB с товарами из нее дергаются элементы через getProducts у которых стоит значение доступен = 1 (available = 1): [[getProduct?
&className=ShopContent
&packageName=shop
&limit=[[!#get.limit:default=
12]]
&parents=7
&tpl=catalogElement
&where={"available:=":"1"}
]] Так все работает, но мне необходимо выбрать элементы которые если недоступны, то имеют значение toOrder = 1. Вобщем в mysql рабочий запрос простой и рабочий, вот такой: <cut>
SELECT * FROM modx_shop_content
as m WHERE m.toOrder = 1 OR m.toOrder = 0 AND m.available = 1 Судя по оффициальной документации rtfm.modx.com/extras/revo/getresources: &where={"template:=":1, "OR:template:=":2}
исходя из этого, должен работать следующий код, но ни один не работает (пустая выборка): &where={"toOrder:=":"1","OR:toOrder:=":"0","AND:available:=":"1"}' &where=
{"toOrder:=:OR":"1","toOrder:=:AND":"0","available:=":"1"}' в логе пишет всегда с AND условиями почему непонятно: SELECT DISTINCT sc
.id
FROM modx_shop_content
sc
WHERE ( ( sc
.resource_id
IN (7)
)
AND (sc
.available
= :available04)
AND (sc
.available
= :available05)
AND (sc
.toOrder
= :toOrder06)
) Люди добрые может кто сталкивался подскажите где собака зарыта?
JSON прогоняется через $modx->fromJSON($json), на выходе получается массив условий, чтобы он был верно разобран нужно соблюдать определенные правила, об этом подробнее можно почитать тут rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where Собственно все можете проверять в консоли modx. $where = array(
array(
"available:="=>"0"
,"AND:toOrder:="=>"1"
)
,"OR:available:="=>"1"
);
$c = $modx->newQuery('modResource');
$c->where($where);
$c->select('id');
$c->prepare()
echo $c->toSQL(); Вернет: SELECT id
FROM modx_site_content
AS modResource
WHERE ( ( modResource
.available
= '0' AND modResource
.toOrder
= '1' ) OR modResource
.available
= '1' ) А если сделать вот так: echo $modx->toJSON($where); получите вашу JSON строку: {"0":{"available:=":"0","AND:toOrder:=":"1"},"OR:available:=":"1"}