2014-01-10 18 views
1

我是我的一個項目,我需要定義兩個捆綁包A和B. 在項目A中,我有一個實體A.E,在項目B中我有一個實體B.E.Symfony2可重用實體

我需要A.E和B.E.之間的雙向關係。但是我也需要能夠用另一個捆綁包C來代替捆綁包B,這個捆綁包將擁有一個實體C.E.然後我將用A.E-C.E的相同關係來代替A.E-B.E雙向關係。

看來我不能教條2定義雙向關係的船受到重用:

// pseudo PHP, just to illustrate. 

/** 
* @manyToOne(targetEntity=B.E) 
* @entity 
*/ 
class A.E() {} 

/** 
* @oneToMany(targetEntity=B.E) 
* @entity 
*/ 
class B.E() {} 

,我不能沒有通過CE不必改變AE我已經習慣了蟒蛇Django的ORM,我不需要在每個實體中聲明兩個實體之間的關係,從而允許構建可重用的實體模型。

我找不到用symfony2構建這種可重用模型的方法。我可能誤解了某些東西或者走錯了路。 Ay對此有所幫助?

謝謝

回答

3

您可以使您的可重用實體與接口相關。基本上是:

class MyReusableEntity 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="MyVendor\MyBundle\MyInterface") 
    * @var MyInterface 
    */ 
    protected $myInterfaceRelation; 
} 

而且在每個項目中使用它:

doctrine: 
    orm: 
     resolve_target_entities: 
      MyVendor\MyBundle\MyInterface: My\Concrete\Class 

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

+0

感謝。所以我想我可以做同樣的事情來擁有可重用的抽象超類。 – Egg