Ejemplo n.º 1
0
 protected function load($tableName)
 {
     $file = $this->cachedName($tableName);
     if (false !== $file) {
         if (!is_file($file) or !$this->debug) {
             $table = $this->driver->describeTable($tableName);
             $this->writeCacheFile($file, serialize($table));
         }
         $table = unserialize(file_get_contents($file));
     } else {
         $table = $this->driver->describeTable($tableName);
     }
     return $table;
 }
Ejemplo n.º 2
0
 protected function update(Table $table, $object, $pk)
 {
     $event = new UpdateEvent($object, array(), array());
     $this->dispatcher->dispatch(Events::PRE_UPDATE, $event);
     if ($event->isStopped()) {
         return;
     }
     $values = ModelUtil::getValues($table, $object);
     $where = "{$table->primaryKey} = ?";
     $originals = $this->find(get_class($object), $pk, PDO::FETCH_ASSOC);
     foreach ($originals as $column => $value) {
         if (array_key_exists($column, $values) and $value === $values[$column]) {
             unset($values[$column]);
         }
     }
     if (count($values)) {
         $event = new UpdateEvent($object, $values, $originals);
         $this->dispatcher->dispatch(Events::UPDATE, $event);
         if ($event->isStopped()) {
             return;
         }
         $this->driver->update($table->name, $values, $where, array($pk));
         $this->dispatcher->dispatch(Events::POST_UPDATE, $event);
     }
 }