public function generateRelations() { $relations = parent::generateRelations(); $className = $this->generateClassName($this->tableName); foreach ($this->getObject()->parameters as $parameter) { //Формируем relations для свойства "Объект (внешний ключ)" if ($parameter->id_parameter_type == DataType::OBJECT) { $refObject = DaObject::getById($parameter->add_parameter); $refClassName = $this->generateClassName($this->removeTablePrefix($refObject->table_name)); $relationName = $this->generateRelationName($refObject->table_name, $this->removeFieldNamePrefix($parameter->field_name), false); if (!isset($relations[$className][$relationName])) { $relations[$className][$relationName] = "array(self::BELONGS_TO, '{$refClassName}', '{$parameter->field_name}')"; } } elseif ($parameter->id_parameter_type == DataType::FILE) { $refClassName = 'File'; $relationName = $this->generateRelationName('da_files', $this->removeFieldNamePrefix($parameter->field_name), false); if ($relationName == $this->removeFieldNamePrefix($parameter->field_name)) { $relationName .= 'File'; } if (!isset($relations[$className][$relationName])) { $relations[$className][$relationName] = "array(self::BELONGS_TO, '{$refClassName}', '{$parameter->field_name}')"; } } elseif ($parameter->id_parameter_type == DataType::REFERENCE) { //TODO Подумать нужно ли? /* $refClassName = 'ReferenceElement'; $relationName = $this->generateRelationName('da_reference_element', $this->removeFieldNamePrefix($parameter->field_name), false); if (!isset($relations[$className][$relationName])) { $relations[$className][$relationName]="array(self::BELONGS_TO, '$refClassName', '$parameter->field_name'), 'on' => 'id_reference = $parameter->add_parameter'"; } */ } } //формируем relations для подчиненных таблиц $parameters = ObjectParameter::model()->findAllByAttributes(array('id_parameter_type' => DataType::OBJECT, 'add_parameter' => $this->getObject()->id_object)); foreach ($parameters as $parameter) { $refObject = DaObject::getById($parameter->id_object); $refClassName = $this->generateClassName($this->removeTablePrefix($refObject->table_name)); $relationName = $this->generateRelationName($refObject->table_name, $this->removeTablePrefix($refObject->table_name), true); if (!isset($relations[$className][$relationName])) { $relations[$className][$relationName] = "array(self::HAS_MANY, '{$refClassName}', '{$parameter->field_name}')"; } } return $relations; }