protected function getVisibleRelationshipsCriteria() { $criteria = new CDbCriteria(); $qpg = new QueryParamGenerator(':getRelationshipsCriteria'); $models = $this->getVisibleRelatedX2Models(); if (!count($models)) { $criteria->addCondition('FALSE'); } else { foreach ($models as $model) { $criteria->addCondition("(firstType=:myType AND firstId=:myId AND\n secondType={$qpg->nextParam(get_class($model))} AND \n secondId={$qpg->nextParam($model->id)})", 'OR'); $criteria->addCondition("(secondType=:myType AND secondId=:myId AND\n firstType={$qpg->nextParam(get_class($model))} AND \n firstId={$qpg->nextParam($model->id)})", 'OR'); } $criteria->params = array_merge(array(':myType' => get_class($this->owner), ':myId' => $this->owner->id), $qpg->getParams()); } return $criteria; }
public function getRelationshipsCriteria($visibleOnly = false) { if (!$visibleOnly) { $criteria = new CDbCriteria(array('condition' => '(firstType=:myType AND firstId=:myId OR secondType=:myType AND secondId=:myId) AND (firstId IS NOT NULL AND firstId != "" AND secondId IS NOT NULL AND secondId != "")', 'params' => array(':myType' => get_class($this), ':myId' => $this->id))); } else { $criteria = new CDbCriteria(); $qpg = new QueryParamGenerator(':getRelationshipsCriteria'); $models = $this->getVisibleRelatedX2Models(); if (!count($models)) { $criteria->addCondition('FALSE'); } else { foreach ($models as $model) { $criteria->addCondition("(firstType=:myType AND firstId=:myId AND\n secondType={$qpg->nextParam(get_class($model))} AND \n secondId={$qpg->nextParam($model->id)})", 'OR'); $criteria->addCondition("(secondType=:myType AND secondId=:myId AND\n firstType={$qpg->nextParam(get_class($model))} AND \n firstId={$qpg->nextParam($model->id)})", 'OR'); } $criteria->params = array_merge(array(':myType' => get_class($this), ':myId' => $this->id), $qpg->getParams()); } } return $criteria; }