Select-запрос modx revo используя newQuery()

Я использую следующий код:
$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, как мне его получить?
Николай Филимонов
22 ноября 2013, 14:31
modx.pro
1
3 770
0

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

Василий Наумкин
22 ноября 2013, 18:42
0
В этом массиве 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')
));
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2