2015-08-16 43 views
4

原則2.5。當原則orm:生成代理投擲「無法實例化自定義生成器」

doctrine orm:generate-proxies 

試圖生成代理手動拋出一個異常:

[學說\ ORM \ ORMException]
無法實例自定義的生成:MyBundle \ MyCustomGenerator

我定義了一個可以正常工作的定製發電機:

/** 
* @ORM\Column(type="string") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="CUSTOM") 
* @ORM\CustomIdGenerator(class="MyBundle\MyCustomGenerator") 
*/ 
protected $id; 

另外,手動實例發電機,像

$a = new MyBundle\MyCustomGenerator(); 

作品。但是由於Doctrine控制檯拋出上述異常的原因。

我試着調試和檢查發生了什麼。
該例外在completeIdGeneratorMappingClassMetadataFactory中定義。我檢查了$definition['class']存儲我的自定義生成器的名稱:MyBundle\MyCustomGenerator。但是,教義仍然找不到課程。
想到我應該將cli-config.php的定義添加爲explained in the doc,其中use MyBundleuse MyBundle\MyCustomGenerator,但它不起作用 - 仍引發相同的異常。

任何想法應該如何讓Doctrine控制檯知道我的自定義ID生成器?

回答

0

不知道它會幫助或仍需要幫助,但嘗試這個

@ORM \ CustomIdGenerator(類= 「\ MyBundle \ MyCustomGenerator」)

即開始加斜槓類定義

+0

謝謝你停下來,但沒有 - 它不工作:( – bostaf

0

在我的情況下,出現了一些語法錯誤,導致類無法正常自動加載。

一旦我在自定義生成器類中解決了這些問題,Doctrine就能夠找到該類。我會希望異常拋出語法錯誤,但它沒有,可能是因爲該類只能通過註釋使用。

然而,正如你所說的,你可以通過其他方式實例化你的班級,所以你可能沒有像我那樣的問題,但也許這可以幫助別人!