コード例 #1
0
 public function toDialectString(Dialect $dialect)
 {
     $query = 'INSERT INTO ' . $dialect->quoteTable($this->table) . ' ';
     if ($this->select === null) {
         $query = $this->toDialectStringValues($query, $dialect);
     } else {
         $query = $this->toDialectStringSelect($query, $dialect);
     }
     $query .= parent::toDialectString($dialect);
     return $query;
 }
コード例 #2
0
 /**
  * @return InsertOrUpdateQuery
  **/
 protected function addReturning(InsertOrUpdateQuery $query)
 {
     $query->returning(DBField::create('field1', 'test_table'), 'alias1')->returning('field2')->returning(SQLFunction::create('count', DBField::create('field5', 'test_table'))->setAlias('alias5'))->returning(OSQL::select()->from('test_table1')->setName('foo1')->get('id'));
     return $query;
 }
コード例 #3
0
 /**
  * @return InsertOrUpdateQuery
  **/
 public function fillQuery(InsertOrUpdateQuery $query, Prototyped $object)
 {
     if ($this->relationId || $this->generic) {
         // skip collections
         if ($this->relationId != MetaRelation::ONE_TO_ONE && !$this->generic) {
             return $query;
         }
         $value = $object->{$this->getter}();
         if ($this->type == 'binary') {
             $query->set($this->columnName, new DBBinary($value));
         } else {
             $query->lazySet($this->columnName, $value);
         }
     }
     return $query;
 }
コード例 #4
0
 /**
  * @return InsertOrUpdateQuery
  **/
 public function fillQuery(InsertOrUpdateQuery $query, Prototyped $object, Prototyped $old = null)
 {
     if ($this->relationId || $this->generic) {
         // skip collections
         if ($this->relationId != MetaRelation::ONE_TO_ONE && !$this->generic) {
             return $query;
         }
         $getter = $this->getter;
         if ($this->relationId && $this->strategyId == FetchStrategy::LAZY) {
             $getter = $getter . 'Id';
         }
         $value = $object->{$getter}();
         if ($old) {
             $oldValue = $old->{$getter}();
             if ($oldValue === null && $value === $oldValue) {
                 return $query;
             } elseif ($this->relationId && $this->strategyId == FetchStrategy::LAZY && $value === $oldValue) {
                 return $query;
             } elseif ($value instanceof Identifiable && $oldValue instanceof Identifiable && $value->getId() === $oldValue->getId()) {
                 return $query;
             } elseif (serialize($value) == serialize($oldValue)) {
                 return $query;
             }
         }
         if ($this->type == 'binary') {
             $query->set($this->columnName, new DBBinary($value));
         } else {
             $query->lazySet($this->columnName, $value);
         }
     }
     return $query;
 }
コード例 #5
0
 protected function inject(InsertOrUpdateQuery $query, Identifiable $object)
 {
     $this->checkObjectType($object);
     return $this->doInject($this->setQueryFields($query->setTable($this->getTable()), $object), $object);
 }
コード例 #6
0
 public function toDialectString(Dialect $dialect)
 {
     $query = 'UPDATE ' . $dialect->quoteTable($this->table) . ' SET ';
     $sets = array();
     foreach ($this->fields as $var => $val) {
         if ($val instanceof DialectString) {
             $sets[] = $dialect->quoteField($var) . ' = (' . $val->toDialectString($dialect) . ')';
         } elseif ($val === null) {
             $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->literalToString(Dialect::LITERAL_NULL);
         } elseif (true === $val) {
             $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->literalToString(Dialect::LITERAL_TRUE);
         } elseif (false === $val) {
             $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->literalToString(Dialect::LITERAL_FALSE);
         } else {
             $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->quoteValue($val);
         }
     }
     return $query . implode(', ', $sets) . $this->joiner->toDialectString($dialect) . parent::toDialectString($dialect);
 }