/** * @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(); }
/** * @param Column $column * @return $this */ public function addColumn(Column $column) { $this->_columnByNameRegistry[$column->getName()] = $column; $this[] = $column; return $this; }