Browse Source

Add Model.afterSaveCommit event.

ADmad 11 years ago
parent
commit
5025c80596
1 changed files with 10 additions and 2 deletions
  1. 10 2
      src/ORM/Table.php

+ 10 - 2
src/ORM/Table.php

@@ -1349,6 +1349,11 @@ class Table implements RepositoryInterface, EventListenerInterface
             $success = $connection->transactional(function () use ($entity, $options) {
                 return $this->_processSave($entity, $options);
             });
+            if ($success) {
+                $this->dispatchEvent('Model.afterSaveCommit', compact('entity', 'options'));
+                $entity->isNew(false);
+                $entity->source($this->registryAlias());
+            }
         } else {
             $success = $this->_processSave($entity, $options);
         }
@@ -1419,8 +1424,10 @@ class Table implements RepositoryInterface, EventListenerInterface
             if ($success || !$options['atomic']) {
                 $entity->clean();
                 $this->dispatchEvent('Model.afterSave', compact('entity', 'options'));
-                $entity->isNew(false);
-                $entity->source($this->registryAlias());
+                if (!$options['atomic']) {
+                    $entity->isNew(false);
+                    $entity->source($this->registryAlias());
+                }
                 $success = true;
             }
         }
@@ -2146,6 +2153,7 @@ class Table implements RepositoryInterface, EventListenerInterface
             'Model.beforeFind' => 'beforeFind',
             'Model.beforeSave' => 'beforeSave',
             'Model.afterSave' => 'afterSave',
+            'Model.afterSaveCommit' => 'afterSaveCommit',
             'Model.beforeDelete' => 'beforeDelete',
             'Model.afterDelete' => 'afterDelete',
             'Model.beforeRules' => 'beforeRules',