luminol
luminol

Reputation: 425

Can I persist the same Document in Doctrine multiple times?

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

Answers (1)

Gabriel Deschamps
Gabriel Deschamps

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

Related Questions