1
我想知道使用Doctrine 2.4是否可以做到以下幾點。對Doctrine2代理生成的影響
假設我們有一個看起來像這樣的實體:
/** * @ORM\Entity * @ORM\Table */ class SomeEntity { /** * @ORM\Id * @ORM\Column(type="bigint") * @ORM\GeneratedValue */ protected $some_really_long_named_id; public function getSomeReallyLongNamedId() { return $this->some_really_long_named_id; } }
由於我們從事IT行業,我們是懶惰的,我說這個方法:
public function getId() { return $this->some_really_long_named_id; }
當這個實體代理和我們在這個實體的代理上調用getId()
,實體是懶加載的。這很奇怪,因爲我們稱getSomeReallyLongNamedId()
時不會發生這種情況。
顯然這與Doctrine的代理對象中的一些魔法有關。生成的代理方法是這樣的:
/** * {@inheritDoc} */ public function getId() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', array()); return parent::getId(); } /** * {@inheritDoc} */ public function getSomeReallyLongNamedId() { if ($this->__isInitialized__ === false) { return parent::getSomeReallyLongNamedId(); } $this->__initializer__ && $this->__initializer__->__invoke($this, 'getSomeReallyLongNamedId', array()); return parent::getSomeReallyLongNamedId(); }
有什麼辦法來影響ProxyGenerator
,以確保當getId()
方法被調用,它並不意味着延遲加載的?
我無法在IdGetter註釋中找到任何參考。有[功能請求](http://www.doctrine-project.org/jira/browse/DDC-687),其中聲明它已實施。但是,在當前的[註解類目錄](https://github.com/doctrine/doctrine2/tree/master/lib/Doctrine/ORM/Mapping)中沒有提及它。 我不能得到它的工作。可能因爲我的情況不同:除了默認的'getId'方法外,我還使用了第二個getter。 – hvtilborg