示例#1
0
 protected function processForeignKeys()
 {
     /** @var ForeignKey[] $beforeForeignKeys */
     $beforeForeignKeys = array();
     if (!$this->before->disableForeignKeys) {
         foreach ($this->before->getForeignKeys() as $foreignKey) {
             $beforeForeignKeys[$foreignKey->getName()] = $foreignKey;
         }
     }
     $afterForeignKeys = $this->after->getForeignKeys();
     if ($this->after->disableForeignKeys) {
         $afterForeignKeys = array();
     }
     foreach ($afterForeignKeys as $foreignKey) {
         if (!isset($beforeForeignKeys[$foreignKey->getName()])) {
             $this->addFkExpression->commaExpr('ADD');
             $this->addFkExpression->appendExpr($this->database()->getUtility()->generateForeignKeyExpression($foreignKey));
         } else {
             unset($beforeForeignKeys[$foreignKey->getName()]);
         }
     }
     foreach ($beforeForeignKeys as $foreignKey) {
         $this->alterLines->commaExpr('DROP FOREIGN KEY ?', new Symbol($foreignKey->getName()));
     }
 }