protected function update() { $class = LateBinding::getCalledClass(); $primaryKey = call_user_func(array($class, 'primaryKey')); $fields = call_user_func(array($class, 'properties')); $field_holderPair = array(); foreach ($fields as $f) { if (in_array($f, $primaryKey)) { continue; } $field_holderPair[] = sprintf('%s = :%s', DB::quoteIdentifier($f), $f); } $condition = array(); foreach ($primaryKey as $pk) { $condition[] = sprintf('%s = :%s', DB::quoteIdentifier($pk), $pk); } $sql = 'UPDATE ' . DB::quoteIdentifier($this->tableName()) . ' '; $sql .= 'SET '; $sql .= implode(',', $field_holderPair) . ' '; $sql .= 'WHERE '; $sql .= implode(' AND ', $condition); $result = DB::query($sql, $this->_data); if ($result === false or $result !== 1) { } }