Esempio n. 1
0
 /**
  * @param \Model\Cluster\Schema\Table\Column $localColumn
  * @param \Model\Cluster\Schema\Table\Column $foreignColumn
  * @param string                             $ruleDelete
  * @param string                             $ruleUpdate
  * @param \Model\Cluster\Schema\Table\Column $linkTableLocalColumn
  * @param \Model\Cluster\Schema\Table\Column $linkTableForeignColumn
  */
 public function __construct(Column $localColumn, Column $foreignColumn, $ruleDelete = AbstractLink::RULE_NO_ACTION, $ruleUpdate = AbstractLink::RULE_CASCADE, Column $linkTableLocalColumn = null, Column $linkTableForeignColumn = null)
 {
     $data['rule_update'] = $ruleUpdate;
     $data['rule_delete'] = $ruleDelete;
     $data['local_column'] = $localColumn;
     $data['foreign_column'] = $foreignColumn;
     $localTable = $localColumn->getTable();
     $data['local_table'] = $localTable;
     $foreignTable = $foreignColumn->getTable();
     $data['foreign_table'] = $foreignTable;
     if ($linkTableLocalColumn && $linkTableForeignColumn) {
         $data['link_table_local_column'] = $linkTableLocalColumn;
         $data['link_table_foreign_column'] = $linkTableForeignColumn;
         $data['link_table'] = $linkTableLocalColumn->getTable();
         if ($linkTableLocalColumn->getName() == 'id') {
             $data['local_entity_alias'] = $localTable->getName();
         } else {
             $data['local_entity_alias'] = str_replace('_id', '', $linkTableLocalColumn->getName());
         }
         if ($linkTableForeignColumn->getName() == 'id') {
             $data['foreign_entity_alias'] = $foreignTable->getName();
         } else {
             $data['foreign_entity_alias'] = str_replace('_id', '', $linkTableForeignColumn->getName());
         }
     } else {
         if ($localColumn->getName() == 'id' && $foreignColumn->getName() == 'id') {
             $data['local_entity_alias'] = $localTable->getName();
             $data['foreign_entity_alias'] = $foreignTable->getName();
         } elseif ($localColumn->getName() == 'id') {
             $data['foreign_entity_alias'] = $foreignTable->getName();
             $data['local_entity_alias'] = str_replace('_id', '', $foreignColumn->getName());
         } else {
             $data['foreign_entity_alias'] = str_replace('_id', '', $localColumn->getName());
             $data['local_entity_alias'] = $localTable->getName();
         }
     }
     parent::__construct($data);
     $this->setupLinkType();
     $this->setName();
 }
Esempio n. 2
0
 /**
  * @param Column $column
  * @return $this
  */
 public function addColumn(Column $column)
 {
     $this->_columnByNameRegistry[$column->getName()] = $column;
     $this[] = $column;
     return $this;
 }