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 transactions.
You can always test the service by mocking TransactionInterface
, consider binding mocked transaction object to your application instance to see what is being persisted.