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);
    }
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);
    }
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 $foreignKey The foreign key mapping
@return ForeignKey
Adds a new foreign key to this table .