[TYPO3-50-general] Persistence: edit/remove elements

Robert Lemke robert at typo3.org
Tue Dec 23 09:51:20 CET 2008

Hi all,

Am 22.12.2008 um 21:11 schrieb Christoph Blömer:

>>> is there a way to edit or remove objects already?
>>> thx :-).
>> yes, just edit or remove them ;-) Every change in an object already
>> persisted (is in a repository) will be recognized by the framework.  
>> To
>> remove an object, just destroy it, for example with unset($object);
> Also Karsten wrote me, that you can use:
> $myRepository->remove($object);
> But i didn't tried it yet.

In general we have based the strategies for persistence on the concepts
of Domain Driven Design. It's quite simple:

If an object is

   - tagged as an @entity or @valueobject and
   - is directly or indirectly connected to a repository

it is persisted.

Consider these examples:

$customerRepository->add($customer); // customer will be persisted

$customer->addContract($contract);   // contract will also be persisted
$contract->addDetail($detail);       // detail will also be persisted

$contract->removeDetail($detail);    // detail will be deleted
unset($customer);                    // customer + contract will still  
be persisted
                                      // because they are still  
connected to the
                                      // $customerRepository

$customerRepository->remove($customer);  // Deletes the $customer


                                      // Retrieves one customer
                                      // Note that findOneBy* is only  
planned, not yet implemented
$otherCustomer = $customerRepository->findOneByLastName('Foo');
$otherCustomer->setLastName('Bar');  // Changes the lastname - will  
automatically be persisted

Note that persistence of additions / changes takes place at the end of  
script run. You can force changes to be persisted by calling the  
method of the Persistence Manager.


More information about the TYPO3-project-5_0-general mailing list