summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/appframework/db/entity.php3
-rw-r--r--lib/public/appframework/db/mapper.php7
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']);