Doctrine\ORM\EntityManager::transactional PHP Method

transactional() public method

The function gets passed this EntityManager instance as an (optional) parameter. {@link flush} is invoked prior to transaction commit. If an exception occurs during execution of the function or flushing or transaction commit, the transaction is rolled back, the EntityManager closed and the exception re-thrown.
public transactional ( Closur\Closure $func )
$func Closur\Closure The function to execute transactionally.
    public function transactional(Closure $func)
    {
        $this->conn->beginTransaction();
        try {
            $func($this);
            $this->flush();
            $this->conn->commit();
        } catch (Exception $e) {
            $this->close();
            $this->conn->rollback();
            throw $e;
        }
    }

Usage Example

 /**
  * @param float $discount
  */
 public function apply($discount)
 {
     $this->entityManager->transactional(function () use($discount) {
         foreach ($this->items->findAll() as $item) {
             $item->applyDiscount($discount);
         }
     });
     $this->entityManager->clear();
 }
All Usage Examples Of Doctrine\ORM\EntityManager::transactional