/** * REPLACE INTO * * @param Model $obj * @param bool $saveAllColumns * @return null */ public function saveByReplace(Model $obj, $saveAllColumns = false) { $rtn = null; $data = $obj->getDataArray(); $modified = $saveAllColumns ? array_keys($data) : $obj->getModified(); $cols = array(); $values = array(); $qParams = array(); foreach ($modified as $key) { $cols[] = '`' . $key . '`'; $values[] = ':' . $key; $qParams[':' . $key] = $data[$key]; } if (count($cols)) { $colString = implode(', ', $cols); $valString = implode(', ', $values); $queryString = 'REPLACE INTO ' . $this->tableName . ' (' . $colString . ') VALUES (' . $valString . ')'; $query = Database::getConnection('write')->prepare($queryString); if ($query->execute($qParams)) { $newId = !empty($data[$this->primaryKey]) ? $data[$this->primaryKey] : Database::getConnection('write')->lastInsertId(); $rtn = $this->getByPrimaryKey($newId, 'write'); } } return $rtn; }