Doctrine orm Apigility和条令,getObjectManager返回NULL

Doctrine orm Apigility和条令,getObjectManager返回NULL,doctrine-orm,laminas-api-tools,Doctrine Orm,Laminas Api Tools,我成功地将doctrine2整合到我的apigility项目中。我将控制器设置为扩展DoctrineResource,当我尝试使用$this->getObjectManager获取实体管理器时,它返回NULL 如果我通过服务管理器调用实体管理器,它会工作,但是如果我想使用doctrineResources的父方法,如fetch、create等,它会崩溃,因为DoctrineModule\Stdlib\Hydrator和其他服务可能会将exexts entity manager作为第一个参数,但它

我成功地将doctrine2整合到我的apigility项目中。我将控制器设置为扩展DoctrineResource,当我尝试使用$this->getObjectManager获取实体管理器时,它返回NULL

如果我通过服务管理器调用实体管理器,它会工作,但是如果我想使用doctrineResources的父方法,如fetch、create等,它会崩溃,因为DoctrineModule\Stdlib\Hydrator和其他服务可能会将exexts entity manager作为第一个参数,但它接收NULL

为什么trait ProvidesObjectManager中的getObjectManager方法返回NULL。在另一个项目中,它正在发挥作用。在这里,我从头开始,找不到问题

您的$objectManager似乎从未被注入自定义扩展DoctrineResource侦听器中

通常,DoctrineResourceFactory会将DoctrineObjectManager/EntityManager注入到侦听器中。 你可以看到

您需要检查工厂是否正确构建了资源侦听器。也许你没有正确注册工厂或者类似的事情。但是如果没有任何代码,我很难说问题到底发生在哪里。

DoctrineResourceFactory将只在他创建的资源中注入ObjectManager

在您的代码中,创建TestResource的是TestResourceFactory,我在该文件的第28行看到了这一点

解决问题的一种方法是在TestResourceFactory中编写如下代码,将ObjectManager注入到资源中:

另一种方法是查看如何配置zf敏捷性原则来稳定您的资源

我只使用Zend Framework 2的条令ORM模块编写带条令的API


zf敏捷性原则的思想与另一种工具相结合。看看这段youtube视频。

我把它放在git上了。。。是的,我明白了。我注意到您的TestResourceFactory实际上是空的。正如我在回答中所写,您需要将您的doctrine$objectManager插入到TestResource实例中。@Ivo成功解决了吗?
<?php
namespace Api\V1\Rest\Test;

class TestResourceFactory
{
    public function __invoke($sm)
    {
        $config        = $sm->get('Config');
        $objectManager = $sm->get($config['object_manager']);
        $resource      = new TestResource();
        $resource->setObjectManager($objectManager); 
        return $resource;
    }
}