Select-запрос modx revo используя newQuery()
Я использую следующий код:
SELECT `contentid` FROM `modx_site_tmplvar_contentvalues` AS `modTemplateVarResource` WHERE ( `value` + «0.00» BETWEEN 10000 and 10000000 OR `modTemplateVarResource`.`value` IN ('r3','r2','r1') ) LIMIT 1000
Куда у меня девается еще одно поле? Помогите пожалуйста, не могу разобраться с фильтрами уже второй день, документации что-то утаивают по этому поводу(
P.S. если изменить массив $q->where вот так:
SELECT `contentid` FROM `modx_site_tmplvar_contentvalues` AS `modTemplateVarResource` WHERE ( `modTemplateVarResource`.`value` IN ('n1') OR `modTemplateVarResource`.`value` IN ('r3','r2','r1') AND `value` + «0.00» BETWEEN 10000 and 10000000 ) LIMIT 1000
Мне вместо этого AND нужен OR, как мне его получить?
$q = $modx->newQuery('modTemplateVarResource');
$q->select(array(
'contentid'
));
$q->where(array(
array(
'`value` + "0.00" BETWEEN 10000 and 10000000'
'OR:value:IN' => array('n1'),
'OR:value:IN' => array('r3', 'r2', 'r1')
)
));
$q->limit(1000);
$q->prepare();
print_r ($q->toSQL());
В результате чего получаю результат SELECT `contentid` FROM `modx_site_tmplvar_contentvalues` AS `modTemplateVarResource` WHERE ( `value` + «0.00» BETWEEN 10000 and 10000000 OR `modTemplateVarResource`.`value` IN ('r3','r2','r1') ) LIMIT 1000
Куда у меня девается еще одно поле? Помогите пожалуйста, не могу разобраться с фильтрами уже второй день, документации что-то утаивают по этому поводу(
P.S. если изменить массив $q->where вот так:
$q->where(array(
array(
'value:IN' => array('n1'),
'OR:value:IN' => array('r3', 'r2', 'r1'),
'`value` + "0.00" BETWEEN 10000 and 10000000'
)
));
Получаю SELECT `contentid` FROM `modx_site_tmplvar_contentvalues` AS `modTemplateVarResource` WHERE ( `modTemplateVarResource`.`value` IN ('n1') OR `modTemplateVarResource`.`value` IN ('r3','r2','r1') AND `value` + «0.00» BETWEEN 10000 and 10000000 ) LIMIT 1000
Мне вместо этого AND нужен OR, как мне его получить?
Комментарии: 2
В этом массиве 2 одинаковых ключа:
Разбей условие:
array(
'`value` + "0.00" BETWEEN 10000 and 10000000'
'OR:value:IN' => array('n1'),
'OR:value:IN' => array('r3', 'r2', 'r1')
)
Разбей условие:
$q->where(array(
'`value` + "0.00" BETWEEN 10000 and 10000000',
'OR:value:IN' => array('n1'),
));
$q->where(array(
'OR:value:IN' => array('r3', 'r2', 'r1')
));
Всё работает, спасибо большое за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.