/** * Adds a new foreign key to this table. * * @param ForeignKey|array $foreignKey The foreign key mapping * @return ForeignKey */ public function addForeignKey($foreignKey) { if ($foreignKey instanceof ForeignKey) { $fk = $foreignKey; $fk->setTable($this); $name = $fk->getPhpName() ?: $fk->getName(); if (isset($this->foreignKeysByName[$name])) { throw new EngineException(sprintf('Foreign key "%s" declared twice in table "%s". Please specify a different php name!', $name, $this->getName())); } $this->foreignKeys[] = $fk; $this->foreignKeysByName[$name] = $fk; if (!in_array($fk->getForeignTableName(), $this->foreignTableNames)) { $this->foreignTableNames[] = $fk->getForeignTableName(); } return $fk; } $fk = new ForeignKey(isset($foreignKey['name']) ? $foreignKey['name'] : null); $fk->setTable($this); $fk->loadMapping($foreignKey); return $this->addForeignKey($fk); }
/** * Adds a new foreign key to this table. * * @param ForeignKey|array * @return ForeignKey */ public function addForeignKey($fkdata) { if ($fkdata instanceof ForeignKey) { $fk = $fkdata; $fk->setTable($this); $this->foreignKeys[] = $fk; if (!in_array($fk->getForeignTableName(), $this->foreignTableNames)) { $this->foreignTableNames[] = $fk->getForeignTableName(); } return $fk; } $fk = new ForeignKey(); $fk->setTable($this); $fk->loadMapping($fkdata); return $this->addForeignKey($fk); }