Doctrine2 / Symfony2 - Multiple entities on same table

Thibaut picture Thibaut · Aug 13, 2013 · Viewed 8.1k times · Source

In a Symfony2 application I have a MainBundle and distinct bundles which can be enabled or not. In the MainBundle I need to have the Model and a basic Entity. In an OtherBundle an Entity with the same table name than Entity in MainBundle.

Fixtures in MainBundle need to be loaded with or without the other bundles than MainBundle :

MainBundle
- Model 
- Entity (Table name "test")
- Fixtures 

OtherBundle
- Entity (Table name "test")
- Fixtures

OtherBundle2
- Entity (Table name="test")
- Fixtures

If i used the @ORM\MappedSuperclass for the Model, a @ORM\Entity for the Entity in MainBundle and @ORM\Entity in OtherBundle then Doctrine2 stop with the error "table already exists".

I cant use the Inheritance table as my model dont need to know about other entities in the other bundles. The @ORM\DiscriminatorMap cant point to OtherBundle.

Is there a way to do this ?

Answer

Marcel Burkhard picture Marcel Burkhard · Nov 6, 2014

As mentioned by Jasper N. Brouwer it's esentially the same entity and the same table, so there is no point in doing what you're trying to do.

Create your entity in a bundle named for example "SharedEntityBundle" and use resolve_target_entity to relate to this entity from other bundles without them knowing about eachother.

http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html

That being said, there seems to be a solution with multiple entity managers: Symfony 2 / Doctrine 2: Two Entities for the same table, use one in favour of the other