Esempio n. 1
0
 private function updateRow($updateColumns = array())
 {
     $updateBuilder = $this->createUpdateBuilder();
     $updateBuilder->from->add($this->table->name());
     foreach ($this->tableColumns as $column) {
         if (count($updateColumns) > 0 && !in_array($column->name, $updateColumns, true)) {
             continue;
         }
         $columnValue = $this->getInternalValue($column->name);
         if (!$this->table->isPrimary($column->name) && $columnValue !== null) {
             if ($columnValue == self::NULL) {
                 $updateBuilder->set->add($column->name, 'NULL', false);
             } else {
                 $updateBuilder->set->add($column->name, $columnValue, $column->doQuote());
             }
         }
     }
     $updateBuilder->where = $this->getPrimaryWhereClause();
     $updateBuilder->updateOne();
 }
Esempio n. 2
0
 public function name() {
     return parent::name() . $this->index;
 }
    /**
     * HACK: mosso MySQL servers can not handle large result sets so the select has to be splitted
     */
    protected function doMossoHack(Gpf_DbEngine_Table $primaryTable, $primaryTableAlias, $primaryColumnName) {
        $orderSelect = new Gpf_SqlBuilder_SelectBuilder();
        $orderSelect->cloneObj($this->_selectBuilder);
        $orderSelect->select = new Gpf_SqlBuilder_SelectClause();
        $orderSelect->select->add($primaryTableAlias.'.'.$primaryColumnName, 'idCol');
        foreach ($orderSelect->orderBy->getAllOrderColumns() as $orderColumns) {
            $dataColumn = $this->dataColumns[$orderColumns->getName()];
            $orderSelect->select->add($dataColumn->getName(), $dataColumn->getId());
        }

        $this->_selectBuilder->from = new Gpf_SqlBuilder_FromClause();
        $this->_selectBuilder->from->addSubselect($orderSelect, 'ors');
        $this->_selectBuilder->from->addInnerJoin($primaryTable->name(), $primaryTableAlias,
        $primaryTableAlias.'.'.$primaryColumnName.'=ors.idCol');
        $i = 0;
        foreach ($orderSelect->from->getAllFroms() as $fromClause) {
            if ($i++ == 0) {
                continue;
            }
            $this->_selectBuilder->from->addClause($fromClause);
        }
        $this->_selectBuilder->limit = new Gpf_SqlBuilder_LimitClause();
    }
 public function setTable(Gpf_DbEngine_Table $table)
 {
     $this->tableName = $table->name();
     $this->table = $table;
 }