db->open_paren(); return $this; } public function close_paren() { $this->db->close_paren(); return $this; } public function save() { model_cache::clear(); $result = parent::save(); $this->original = clone $this; return $result; } public function __set($column, $value) { if (!isset($this->original)) { $this->original = clone $this; } return parent::__set($column, $value); } public function __unset($column) { if (!isset($this->original)) { $this->original = clone $this; } return parent::__unset($column); } public function original() { return $this->original; } } /** * Slide this in here for convenience. We won't ever be overloading ORM_Iterator without ORM. */ class ORM_Iterator extends ORM_Iterator_Core { /** * Cache the result row */ public function current() { $row = parent::current(); if (is_object($row)) { model_cache::set($row); } return $row; } }