Exemplo n.º 1
0
 /**
  * @param QlDao $dao
  *
  * @return null|IStatement
  */
 protected function _getStatement(QlDao $dao)
 {
     $qb = static::_getQueryBuilderClass();
     if ($dao->isDaoLoaded()) {
         $data = $this->_getDaoChanges($dao);
         foreach ($data as $field => $value) {
             $data[$field] = $this->_getCounterValue($dao, $field, $value);
         }
         $qb = static::_getQueryBuilderClass();
         $statement = $qb::update($dao->getTableName(), $data)->where($dao->getId(true));
     } else {
         $data = $dao->getDaoPropertyData();
         $statement = $qb::insertInto($dao->getTableName(), ...array_keys($data))->values(...array_values($data));
         if ($this->_hasIds($dao)) {
             foreach ($this->_getDaoChanges($dao, false) as $field => $value) {
                 $statement->onDuplicateKeyUpdate($field, $this->_getCounterValue($dao, $field, $value));
             }
         }
     }
     return $statement;
 }