In order to persist entity changes your application services and controllers will require Cycle\ORM\TransactionInterface
.
By default, the framework will automatically create a transaction on-demand from the container. Considering that transactions always clean
after the run
operation you can request it as a constructor parameter.
use Cycle\ORM;
class MyService
{
private $tr;
public function __construct(ORM\TransactionInterface $tr)
{
$this->tr = $tr;
}
}
Make sure that
persist
/delete
andrun
methods are always called within one method scope while using service specific transaction.
You can always test your by mocking TransactionInterface
, consider binding mocked transaction object to your application instance to see what is being persisted.