教义 orm:generate-proxies 抛出“无法实例化自定义生成器”
Posted
技术标签:
【中文标题】教义 orm:generate-proxies 抛出“无法实例化自定义生成器”【英文标题】:Doctrine orm:generate-proxies throwing "Can't instantiate custom generator" 【发布时间】:2015-11-09 01:31:43 【问题描述】:教义 2.5。尝试手动生成代理时
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 Console 抛出了上述异常。
我已尝试调试并检查发生了什么。
异常在ClassMetadataFactory
的completeIdGeneratorMapping
中定义。我检查了$definition['class']
存储了我的自定义生成器的名称:MyBundle\MyCustomGenerator
。但是,Doctrine 仍然找不到课程。
以为我应该将定义添加到cli-config.php
为explained in the doc,使用use MyBundle
或use MyBundle\MyCustomGenerator
,但它不起作用 - 仍然引发了相同的异常。
我应该如何让 Doctrine Console 知道我的自定义 ID 生成器?
【问题讨论】:
【参考方案1】:在我的例子中,有几个语法错误导致类无法正确自动加载。
一旦我在自定义生成器类中解决了这些问题,Doctrine 就能够找到该类。我原以为异常抛出是语法错误,但事实并非如此,可能是因为该类仅通过注释使用。
但是,正如您所说,您可以通过其他方式实例化您的类,因此您可能不会遇到与我相同的问题,但也许这可以帮助其他人!
【讨论】:
【参考方案2】:不确定它是否会有所帮助或仍然需要帮助,但试试这个
@ORM\CustomIdGenerator(class="\MyBundle\MyCustomGenerator")
即在类定义中添加斜杠
【讨论】:
以上是关于教义 orm:generate-proxies 抛出“无法实例化自定义生成器”的主要内容,如果未能解决你的问题,请参考以下文章