我有2個實體,聯繫人和聯繫人類型。 所有者實體聯繫,具有屬性$類型:如何在屬性中設置默認實體關係?
/**
* @ORM\ManyToOne(targetEntity="Evo\BackendBundle\Entity\ContactType")
* @ORM\JoinColumn(nullable=true)
*/
protected $type = null;
我現在必須設置這種關係是強制性的。我嘗試了以下內容:
/**
* @ORM\ManyToOne(targetEntity="Evo\BackendBundle\Entity\ContactType")
* @ORM\JoinColumn(nullable=false)
*/
protected $type = 2;
但是,我收到一個錯誤,它非常邏輯。我應該設置一個實體(ID爲2)作爲默認值,而不是整數。但我不知道如何做到這一點。我以前讀過,我不應該做任何查詢數據庫或實體內的EntityManager的任何使用。那麼我如何設置一個默認的ContactType?
嘗試withRegistering一個'事件Listeners'和創造你的實體中找到並安裝正確的默認合約類型,以你的實體。希望這可以幫助 – Matteo 2015-04-02 08:27:04
但我必須在任何地方手動觸發事件我創建一個新的聯繫人?因此,使用'$ contact-> setContactType($ em-> getRepository('ContactType') - > find(2));直接在控制器中手動直接手動設置它們幾乎沒有區別:'或者我可以以某種方式自動觸發該事件在聯繫實體,所以我只有一個地方做腳本更新? – VaN 2015-04-02 08:36:21
對不起,我討論的是[doc]對象生命週期管理的[this](http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html)。是的,你也可以在控制器中完成這項工作,只是一種分離邏輯的方法。具體來說,您可以在'prePersist'[doctrine2生命週期](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#lifecycle-events)並在您的對象上添加特定的關係到合約類型。 – Matteo 2015-04-02 08:40:12