for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Cycle\ORM\Select;
use Cycle\ORM\ORMInterface;
use Cycle\ORM\Select;
use Cycle\ORM\Transaction;
class PersistRepository extends Repository
{
/** @var Transaction */
private $transaction;
/**
* @param Select $select
* @param ORMInterface $orm
*/
public function __construct(
Select $select,
ORMInterface $orm
) {
parent::__construct($select);
$this->transaction = new Transaction($orm);
}
* @param mixed $entity
* @param bool $cascade
*
* @throws \Throwable
public function save(
$entity,
bool $cascade = true
): void {
$this->transaction->persist(
$cascade ? Transaction::MODE_CASCADE : Transaction::MODE_ENTITY_ONLY
);
$this->transaction->run(); // transaction is clean after run
public function delete(
* @param $id
public function deleteByPK(
$id,
$this->delete($this->findByPK($id), $cascade);