2013-04-05 65 views
1

我有一个问题给大家。在我使用Codeigniter约1年后,我开始使用Zend Framework。我已经安装了一切,现在一切正在运行。但我有一个问题。我想用我的建模学说。我总是使用Doctrine的PersistentObject,但我似乎无法得到它的工作。在Zend Framework中使用来自Doctrine的PersistentObject

问题是我需要通过ObjectManager传递给PersistentObject。但我无法让它工作。有没有人知道我如何通过ObjectManger从DoctrineORM模块传递给PersistentObject?

如果我不够清楚,你可以告诉我。说英语对我来说有点麻烦。我很抱歉!

+0

这里可能有几个人认识这个问题,但我不知道。你能提供一些你试过的代码吗?也许那么我会理解你的担忧。 ObjectManager可以通过'$ this-> getServiceLocator() - > get('Doctrine \ ORM \ EntityManager')获取;' – Sam 2013-04-05 21:25:31

+0

对不起......也许我在我的问题中不太清楚。我想使用Doctrine中的PersistentObject,因此我必须使用PersistentObject类中的setObjectManager设置objectManger。我不想在每个实体中这样做,但我想这样做一次。因此我必须在我的代码中调用PersistentObject :: setObjectManager。但我不知道该怎么做......我希望我现在对你更清楚一点! – 2013-04-05 22:29:38

+0

您需要指定Zend Framework 1或2的哪个版本,以及您尝试实施的哪个版本的Doctrine版本不会受到影响。 – RockyFord 2013-04-06 10:43:30

回答

3

你能做到这一点在你的模块的onBootstrap()方法:

<?php 
namespace MyApplication; 
use Doctrine\Common\Persistence\PersistentObject; 

class Module { 

    public function onBootstrap($e){ 
     $serviceManager = $e->getApplication()->getServiceManager(); 
     PersistentObject::setObjectManager($sm->get('Doctrine\ORM\EntityManager'); 
    } 

} 
+0

你是最棒的!非常感谢你。我想我需要从serviceManager中学到更多东西。这是Zend框架2中的一种注册吗? – 2013-04-06 14:08:24

+0

是的,ZF2中的ServiceManager取代了ZF1的Zend_Registry组件 - 并且做了很多。最大的区别是,在引导过程中不是创建服务,而是注册工厂(或者如果没有依赖关系,请将您的类注册为可调用的)。所以你有两个主要的好处:延迟加载(除非需要它们,否则不会实例化类)以及一些依赖关系管理(在工厂中定义)。 – timdev 2013-04-06 20:51:17

相关问题