Саша, по поводу нескольких записей в БД — не парьс
Nov 6, 2013
Саша, по поводу нескольких записей в БД — не парься. Там же процессор уже написан с учетом этого, и в итоге он все равно вернет только уникальные данные.
А несколько джоинов — это все равно по одной записи к одной, так что кол-во итоговых записей не меняется (если четко указано условие по id-шникам). К тому же prepareCountQuery() — это метод с копией объекта запроса. Его цель — только получение id-шников конечных объектов. Так что там за запрос не переживай вообще. Делай просто несколько джоинов по своим условиям и все. Перечисляй несколько своих TV-условий и все.
if($this->getProperty('model')){
$c->innerJoin('modTemplateVarResource',
'model', "model.contentid = {$this->classKey}.id
AND model.tmplvarid = 10
AND model.value='$this->getProperty('model')'");
}
if($color = $this->getProperty('color')){
$c->innerJoin('modTemplateVarResource', 'color_tv',
"color_tv.contentid = {$this->classKey}.id
AND color_tv.tmplvarid = 11
AND color_tv.value='{$color}'");
}