Reputation: 425
Can I create a new Document Object and then keep persisting over and over with the document manager in Doctrine within the same linear list of instructions?
I am implementing a logging system within my Symfony2 Project with Doctrine, Stripe and MongoDB. Basically I want to keep logging progress as each instruction is executed. The reason for this is because sometimes the instructions can only reach a certain point because the Bank will decline the card and an exception will be thrown. There are no 100% definite errors. And I want to be able to pick up where I left off.
For instance.
$charge = new StripeChargeCardObject(); //this is the Document
$charge->setEvent("card.charger");
$charge->setPhase(1);
$this->dm = new DocumentManager();
$dm->persist($charge);
$dm->flush();
$payload = new StripePayload($event);
$charge->setPhase(2);
$charge->setPayload($payload);
$this->dm->persist($charge);
$this->dm->flush();
.....
As I keep going down the list, changing the values of the Document until there is an Exception thrown.
Can I use the same $charge Document, keep editing it, and keep persisting it? Or do I need to load it again each and every time after I persist and flush?
Upvotes: 0
Views: 495
Reputation: 376
As long as you don't flush, nothing is saved in your DB, so you can still edit your object and persist.
In your actual code you create a new object each time the instructions are read. I am not sure this is the behavior you want.
If you want to have a single object in DB, you should fetch the object you want to edit (and create a new one only if your query returns null result).
Hope it will help you to see what's better for you !
Upvotes: 1