2015-08-16 46 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就能够找到该类。我会希望异常抛出语法错误,但它没有,可能是因为该类只能通过注释使用。

然而,正如你所说的,你可以通过其他方式实例化你的班级,所以你可能没有像我那样的问题,但也许这可以帮助别人!