generateRelations() protected method

protected generateRelations ( )
Ejemplo n.º 1
0
 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;
 }