Всем привет.
Ситуация такая, есть несколько ресурсов, пытаюсь сделать выборку по ТВ-параметрам, нужно выбирать так что бы по заданным ТВ было точное совпадение
SQL запрос
SELECT * FROM `modx_site_content` AS `modResource` JOIN `modx_site_tmplvar_contentvalues` `TemplateVarResources` ON `modResource`.`id` = `TemplateVarResources`.`contentid` JOIN `modx_site_tmplvars` `tv` ON tv.id=TemplateVarResources.tmplvarid WHERE ( ( `modResource`.`deleted` = 0 AND `modResource`.`hidemenu` = 0 AND `modResource`.`published` = 1 ) AND ( ( `tv`.`name` = 'item_country' AND `TemplateVarResources`.`value` = '1' ) AND ( `tv`.`name` = 'item_color' AND `TemplateVarResources`.`value` = '2' ) ) )
xPDO
function prepareQueryBeforeCount(xPDOQuery $c){ $c = parent::prepareQueryBeforeCount($c); //$filter = $this->prepareFilterCriteria($this->getProperty('filter')); $filter = array( array( 'tv.name' => 'item_country', "TemplateVarResources.value" => 1 ), array( 'tv.name' => 'item_color', "TemplateVarResources.value" => 2 ) ); if ($filter){ $c->innerJoin('modTemplateVarResource', 'TemplateVarResources'); $c->innerJoin('modTemplateVar', 'tv', "tv.id=TemplateVarResources.tmplvarid"); $c->where($filter); } return $c; }
подскажите пожалуйста где я ошибаюсь
Каждый отдельный ТВ-параметр нужно приджойнить отдельно: Выборка ресурсов с TV-параметрами
спасибо за ответ…
это я уже понял… теперь вопрос стал в другом… как избавится от явного указания ID для TV
Price.tmplvarid = 14
например есть имя твшки
хотя наверное пофиг у ТВшек все равно не шаблонные значение