You should use Doctrine 2 Event listeners if you need access to the EntityManager. Usage of the EntityManager within entities themselves is STRONGLY discouraged, especially within Life-cycle Callbacks. Marco Pivetta http://twitter.com/Ocramius http://marco-pivetta.com
On 22 June 2011 18:32, oscar balladares <liebegr...@gmail.com> wrote: > I Marcelo. I have not tried to use the EM, but as far as I know, it is not > available in the Entity's scope, I will try to find out if this is correct, > because I'm interested in atomic queries. > > Regards! > > > 2011/6/22 Marcelo Prizmic <mpriz...@gmail.com> > >> Oscar >> >> Thanks for the example!! >> >> Did you use entity manager in the uploadFile()? >> >> In my case I would need to make some queries inside the "preEvent" >> function. Do you know how? >> >> Marcelo >> >> >> 2011/6/21 oscar balladares <liebegr...@gmail.com> >> >>> Hi Marcelo; yes, of course: >>> >>> I'm currently using YML config instead of Annotations. I do really love >>> to separate metadata from Entities classes. >>> >>> You have to tell doctrine to enable LifeCycleCallback event like this: >>> >>> Oscar\HotelBundle\Entity\Foto: >>> type: entity >>> table: foto >>> repositoryClass: Oscar\HotelBundle\Repo\FotoRepo >>> id: >>> id: >>> type: integer >>> generator: >>> strategy: AUTO >>> fields: >>> titulo: >>> type: string >>> length: 100 >>> notnull: false >>> >>> *lifecycleCallbacks:* >>> * postPersist: [ uploadFile ]* >>> >>> >>> So you should have an uploadFile() method defined in the entity's class. >>> >>> When you call $em->flush() Doctrine will look for events prior or post >>> flushing. (prePersist, postPersist, preUpdate, postUpdate, preRemove, >>> postRemove) >>> >>> Class Foto >>> { >>> //private properties >>> >>> //public getters and setters >>> >>> public function uploadFile() >>> { >>> //this is invoked after this entity is persisted. >>> } >>> >>> } >>> >>> In my case, every event is invoked properly, but preUpdate nor >>> postUpdate; If I would have misstyped prePersist: [ uploadFil* >>> eIMisstypedThis* ] >>> the framework will thrown an exception telling me that such method >>> doesn't exist in the entity class; if I do the same for preUpdate, or >>> postUpdate, >>> it will be ignored, like it doesn't check the method. >>> >>> Regards! >>> >>> 2011/6/20 Marcelo Prizmic <mpriz...@gmail.com> >>> >>>> Hi Oscar >>>> Could you post some code about how to use per or post events? >>>> Thanks >>>> Marcelo >>>> >>>> >>>> 2011/6/20 oscar balladares <liebegr...@gmail.com> >>>> >>>>> Hi everybody!. >>>>> >>>>> I'm using Yaml configuration for doctrine metadata. >>>>> >>>>> All others events (prePersist, postPersist, preRemove, postRemove) are >>>>> working properly, but not the preUpdate and PostUpdate. >>>>> >>>>> Of course, I'm just calling the 'persist' method of the $EntityManager: >>>>> >>>>> $em->persist($AlreadyInDatabaseEntityInstance); >>>>> $em->flush(); >>>>> >>>>> The row in the database is updated actually, but the method is never >>>>> called. >>>>> >>>>> the easiest way to prove myself I'm not crazy, is that if the method >>>>> name that has been set in the metadata is not correct, >>>>> then when the Event is called, an exception will be thrown, i.e: >>>>> >>>>> preRemove: [ preRemoveMethod ] >>>>> >>>>> then I: $em->remove($entity) >>>>> >>>>> If the preRemoveMethod doesn't exist in the Entity class, then an >>>>> excepetion will be trhown. >>>>> In the other hand, preUpdate/postUpdate will be ignored completely. I >>>>> can: >>>>> >>>>> preUpdate: [ asdfasdfaThisMethodDoesNotExistInTheEntityClassaesrseres ] >>>>> >>>>> No exception will be thrown, knowing that such method doesn't exist at >>>>> all. >>>>> >>>>> (It won't happen with any other event). >>>>> >>>>> What could be wrong? >>>>> >>>>> Regards! >>>>> >>>>> -- >>>>> If you want to report a vulnerability issue on symfony, please send it >>>>> to security at symfony-project.com >>>>> >>>>> You received this message because you are subscribed to the Google >>>>> Groups "symfony users" group. >>>>> To post to this group, send email to symfony-users@googlegroups.com >>>>> To unsubscribe from this group, send email to >>>>> symfony-users+unsubscr...@googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/symfony-users?hl=en >>>>> >>>> >>>> -- >>>> If you want to report a vulnerability issue on symfony, please send it >>>> to security at symfony-project.com >>>> >>>> You received this message because you are subscribed to the Google >>>> Groups "symfony users" group. >>>> To post to this group, send email to symfony-users@googlegroups.com >>>> To unsubscribe from this group, send email to >>>> symfony-users+unsubscr...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/symfony-users?hl=en >>>> >>> >>> -- >>> If you want to report a vulnerability issue on symfony, please send it to >>> security at symfony-project.com >>> >>> You received this message because you are subscribed to the Google >>> Groups "symfony users" group. >>> To post to this group, send email to symfony-users@googlegroups.com >>> To unsubscribe from this group, send email to >>> symfony-users+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/symfony-users?hl=en >>> >> >> -- >> If you want to report a vulnerability issue on symfony, please send it to >> security at symfony-project.com >> >> You received this message because you are subscribed to the Google >> Groups "symfony users" group. >> To post to this group, send email to symfony-users@googlegroups.com >> To unsubscribe from this group, send email to >> symfony-users+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/symfony-users?hl=en >> > > -- > If you want to report a vulnerability issue on symfony, please send it to > security at symfony-project.com > > You received this message because you are subscribed to the Google > Groups "symfony users" group. > To post to this group, send email to symfony-users@googlegroups.com > To unsubscribe from this group, send email to > symfony-users+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/symfony-users?hl=en > -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en