Get service container from entity in symfony 2.1 (Doctrine)
EDIT: THIS IS NOT THE PREFERRED WAY, it's the only way to get service container inside an entity, it's not a good practice, it should be avoided, but this just answers the question.
In case you still want the container and/or repository you can extend a base abastractEntity like this:
<?phpnamespace Acme\CoreBundle\Entity;/** * Abstract Entity */abstract class AbstractEntity{ /** * Return the actual entity repository * * @return entity repository or null */ protected function getRepository() { global $kernel; if ('AppCache' == get_class($kernel)) { $kernel = $kernel->getKernel(); } $annotationReader = $kernel->getContainer()->get('annotation_reader'); $object = new \ReflectionObject($this); if ($configuration = $annotationReader->getClassAnnotation($object, 'Doctrine\ORM\Mapping\Entity')) { if (!is_null($configuration->repositoryClass)) { $repository = $kernel->getContainer()->get('doctrine.orm.entity_manager')->getRepository(get_class($this)); return $repository; } } return null; }}
An entity is a data model and should only hold data (and not have any dependencies on services). If you want to modify your model in case of a certain event (PrePersist in your case) you should look into making a Doctrine listener for that. You can inject the container when defining the listener:
services: my.listener: class: Acme\SearchBundle\Listener\YourListener arguments: [@your_service_dependency_or_the_container_here] tags: - { name: doctrine.event_listener, event: prePersist }