Ejemplo n.º 1
0
 /**
  * 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));
 }