示例#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()));
     }
 }
示例#2
0
 public function __construct(Table $table)
 {
     $this->table = $table;
     $this->bindDatabase($table->database());
     $this->createLines = new SimpleExpression();
     $this->createLines->setOpComma(',' . PHP_EOL);
     $this->fkLines = new SimpleExpression();
     $this->fkLines->setOpComma(',' . PHP_EOL);
     $createExpression = new SimpleExpression('CREATE TABLE ? (' . PHP_EOL, $this->table);
     $this->add($createExpression);
     $createExpression->appendExpr($this->createLines);
     $createExpression->appendExpr(PHP_EOL . ')');
     $this->appendColumns();
     $this->appendIndexes();
     $this->createLines->commaExpr($this->fkLines);
     $this->appendForeignKeys();
     $this->appendPrimaryKey();
     if ($this->createLines->isEmpty()) {
         $createExpression->disable();
     }
 }
示例#3
0
 public function set($expression, $binds = null)
 {
     if (null === $expression) {
         return $this;
     }
     if (is_array($expression)) {
         $expressionString = '';
         $bindsArray = array();
         if (is_string($binds)) {
             $table = $binds;
         } else {
             $table = null;
         }
         foreach ($expression as $key => $value) {
             $expressionString .= '? = ?, ';
             $bindsArray[] = new Symbol($table, $key);
             $bindsArray[] = $value;
         }
         $expressionString = substr($expressionString, 0, -2);
         $expression = new SimpleExpression($expressionString, $bindsArray);
     } else {
         $expression = SimpleExpression::createFromFuncArguments(func_get_args());
     }
     if (null === $this->set) {
         $this->set = $expression;
     } else {
         $this->set->commaExpr($expression);
     }
     return $this;
 }