magr0s 15 августа 2016 1 3
Всем привет.

Ситуация такая, есть несколько ресурсов, пытаюсь сделать выборку по ТВ-параметрам, нужно выбирать так что бы по заданным ТВ было точное совпадение

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;
    }


подскажите пожалуйста где я ошибаюсь

3 комментария
ilyautkin1
ilyautkin 15 августа 2016г в 10:21 #
Каждый отдельный ТВ-параметр нужно приджойнить отдельно: Выборка ресурсов с TV-параметрами
m
magr0s 15 августа 2016г в 10:34 #
спасибо за ответ…

это я уже понял… теперь вопрос стал в другом… как избавится от явного указания ID для TV
Price.tmplvarid = 14

например есть имя твшки

m
magr0s 15 августа 2016г в 10:36 #
хотя наверное пофиг у ТВшек все равно не шаблонные значение
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.