protected function resolveExtraSql(RedBeanModelJoinTablesQueryAdapter &$joinTablesAdapter, &$where) { $user = Yii::app()->user->userModel; $quote = DatabaseCompatibilityUtil::getQuote(); if ($where != '') { $where .= ' and '; } $modelClassName = $this->modelClassName; $starredClassName = StarredUtil::getStarredModelClassName($modelClassName); $starredTableName = $starredClassName::getTableName(); $modelIdColumnName = $modelClassName::getTableName() . '_id'; $baseStarredTableName = BaseStarredModel::getTableName(); $baseStarredColumnName = $baseStarredTableName . '_id'; $starredTableAliasName = $joinTablesAdapter->addLeftTableAndGetAliasName($starredTableName, 'id', null, $modelIdColumnName); $baseStarredTableAliasName = $joinTablesAdapter->addFromTableAndGetAliasName($baseStarredTableName, $baseStarredColumnName, $starredTableAliasName); $where .= "{$quote}{$baseStarredTableAliasName}{$quote}.{$quote}_user_id{$quote} = {$user->id}"; }
public static function getDefaultMetadata() { $metadata = parent::getDefaultMetadata(); $metadata[__CLASS__] = array('relations' => array(static::getRelationName() => array(static::HAS_ONE, static::getRelatedModelClassName())), 'indexes' => static::getIndexesDefinition()); return $metadata; }
protected static function getIndexesDefinition() { $relatedModelClassName = static::getRelatedModelClassName(); $relatedColumnName = $relatedModelClassName::getTableName() . '_id'; // can't use self:: here as getTableName() uses get_called_class $baseStarredColumnName = BaseStarredModel::getTableName() . '_id'; return array($baseStarredColumnName . '_' . $relatedColumnName => array('members' => array($baseStarredColumnName, $relatedColumnName), 'unique' => true)); }