/** * updateOne 從 db 上更新一個 $row 的 data * * @param Pix_Table_Row $row * @param array|string $data * @access public * @return void */ public function updateOne($row, $data) { $table = $row->getTable(); $sql = 'UPDATE ' . $this->column_quote($table->getTableName()); $sql .= ' SET ' . $this->_get_set_clause($data, $table); $sql .= ' WHERE '; $sql .= $this->_get_where_clause(Pix_Table_Search::factory(array_combine($table->getPrimaryColumns(), $row->getPrimaryValues()), $table)); return $this->query($sql); }
/** * updateOne 從 db 上更新一個 $row 的 data * * @param Pix_Table_Row $row * @param array $data * @access public * @return void */ public function updateOne($row, $data) { if (!is_array($data)) { throw new Pix_Table_Exception('Pix_Table_Db_Adapter_AmazonDynamoDb 只允許提供 update->(array)'); } $table = $row->getTable(); $primary_values = $row->getPrimaryValues(); $primary_keys = $table->getPrimaryColumns(); $get_key = array(); if (count($primary_keys) == 1) { $get_key['HashKeyElement'] = array($this->_getColumnType($table, $primary_keys[0]) => $primary_values[0]); } elseif (count($primary_keys) == 2) { $get_key['HashKeyElement'] = array($this->_getColumnType($table, $primary_keys[0]) => $primary_values[0]); $get_key['RangeKeyElement'] = array($this->_getColumnType($table, $primary_keys[1]) => $primary_values[1]); } else { throw new Pix_Table_Exception("AmazonDynamoDB 只支援最多兩個 Primary Key 的 Table"); } $updates = array(); foreach ($data as $key => $value) { $updates[$key] = array('Action' => AmazonDynamoDB::ACTION_PUT, 'Value' => array($this->_getColumnType($table, $key) => $value)); } $db = $this->_getDb(); $db->update_item(array('TableName' => $table->getTableName(), 'Key' => $get_key, 'AttributeUpdates' => $updates)); }