diff options
Diffstat (limited to 'lib/public')
-rw-r--r-- | lib/public/appframework/db/entity.php | 3 | ||||
-rw-r--r-- | lib/public/appframework/db/mapper.php | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/lib/public/appframework/db/entity.php b/lib/public/appframework/db/entity.php index 631bf85061e..8ab42bd9153 100644 --- a/lib/public/appframework/db/entity.php +++ b/lib/public/appframework/db/entity.php @@ -92,6 +92,9 @@ abstract class Entity { protected function setter($name, $args) { // setters should only work for existing attributes if(property_exists($this, $name)){ + if($this->$name === $args[0]) { + return; + } $this->markFieldUpdated($name); // if type definition exists, cast to correct type diff --git a/lib/public/appframework/db/mapper.php b/lib/public/appframework/db/mapper.php index f65a232ed83..13a4c65e493 100644 --- a/lib/public/appframework/db/mapper.php +++ b/lib/public/appframework/db/mapper.php @@ -127,6 +127,12 @@ abstract class Mapper { * @param Entity $entity the entity that should be created */ public function update(Entity $entity){ + // if entity wasn't changed it makes no sense to run a db query + $properties = $entity->getUpdatedFields(); + if(count($properties) === 0) { + return $entity; + } + // entity needs an id $id = $entity->getId(); if($id === null){ @@ -136,7 +142,6 @@ abstract class Mapper { // get updated fields to save, fields have to be set using a setter to // be saved - $properties = $entity->getUpdatedFields(); // dont update the id field unset($properties['id']); |