Transaction et état d'une entity
Bonjour à tous,
Je rencontre un problème avec la gestion des transactions avec Doctrine2 :
Voici mon code, disons qu'un truc est composé d'item:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
class truc{
/**
* @ORM\OneToMany(targetEntity="Item", mappedBy="item", cascade={"remove"})
*/
private $items;
}
class Manager{
public function deleteItem($item){
$truc = $item->getTruc();
-->breakpoint<-- $this->entityManager->beginTransaction();
try{
$this->entityManager->lock($truc, \Doctrine\DBAL\LockMode::PESSIMISTIC_WRITE);
$this->entityManager->refresh($truc);
if($truc===null)
throw ....
}catch...
}
} |
En mode debug, j'arrive sur le breakpoint, je supprime en base la ligne correspondant à l'entity "truc", j'avance dans le debug, je rafraîchis l'entity avec la méthode refresh.
A ce moment, en toute logique, $truc devrait être null ou vide puisque la ligne en base a été supprimée. Et pourtant non !
Une exception SQL est ensuite levée pendant le flush (pas très jolie et pas assez explicite à mon goût).
Comment être sûr que l'entity est toujours présente en base de données ?
Merci d'avance
Piloo