$c = $modx->newQuery('modResource');
$c->innerJoin('modTemplateVarResource','TemplateVarResources');
$c->rightJoin('modTemplateVar','TemplateVar1','`TemplateVar1`.`id` = `TemplateVarResources`.`tmplvarid` AND `TemplateVar1`.`id` = 14');
$c->andCondition(array('TemplateVarResources.value:<' => '5'));
$c->leftJoin('modTemplateVar','TemplateVar2','`TemplateVar2`.`id` = `TemplateVarResources`.`tmplvarid` AND `TemplateVar2`.`id` = 41');
$c->andCondition(array('TemplateVarResources.value:LIKE' => '%'));
$c->where(array(
'template' => $modx->resource->get('template'),
'deleted' => false,
'hidemenu' => false,
'published' => true
));
$resources = $modx->getCollection('modResource',$c);
$c = $modx->newQuery('modResource');
$c->innerJoin('modTemplateVarResource','TemplateVarResources');
$c->rightJoin('modTemplateVar','TemplateVar1','`TemplateVar1`.`id` = `TemplateVarResources`.`tmplvarid` AND `TemplateVar1`.`id` = 14');
$c->andCondition(array('TemplateVarResources.value:<' => '5'));
$c->andCondition(array('TemplateVarResources.value:>' => '3'));
$c->leftJoin('modTemplateVar','TemplateVar2','`TemplateVar2`.`id` = `TemplateVarResources`.`tmplvarid` AND `TemplateVar2`.`id` = 41');
$c->andCondition(array('TemplateVarResources.value:LIKE' => '%'));
$c->where(array(
'template' => $modx->resource->get('template'),
'deleted' => false,
'hidemenu' => false,
'published' => true
));
$resources = $modx->getCollection('modResource',$c);
It’s going to be difficult without knowing the details of your TV data. The like => % is going to match nothing or everything, not sure which, but otherwise, I don’t see anything obvious.
Can you explain at all why it doesn’t work as I am trying to do it?
... I’d prefer not to do that as I’m trying to get a grip on (x)PDO but, sometimes we do what we have to do.
$query->where(array(
array(
'id:IN' => $children_of_this_folder,
'published' => true,
'deleted' => false,
'hidemenu' => false,
'isfolder' => false,
),
array(
array(
'TemplateVar.name' => 'tv1',
'TemplateVarResources.value' => 'something',
),
array(
'TemplateVar.name' => 'tv2',
'TemplateVarResources.value:!=' => 'something else'
)
)
));