Zend framework 如何在SLMQUE作业中获得doctrine2 entitymanager?

Zend framework 如何在SLMQUE作业中获得doctrine2 entitymanager?,zend-framework,doctrine-orm,Zend Framework,Doctrine Orm,我将使用SlmQueue() 如何让doctrine2 entitymanager进入job类?我成功地做到了以下几点: class DistributeNewsJob extends AbstractJob implements QueueAwareInterface, ServiceLocatorAwareInterface { use QueueAwareTrait; public function e

我将使用SlmQueue()


如何让doctrine2 entitymanager进入job类?

我成功地做到了以下几点:

        class DistributeNewsJob extends AbstractJob implements QueueAwareInterface, ServiceLocatorAwareInterface
        {   
            use QueueAwareTrait;

            public function execute()
            {
                 // job code

            }

            private $entityManager;
            private function getEntityManager()
            {
                if (null === $this->entityManager) {    
                    $this->entityManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
                }
                return $this->entityManager;
            }

            private $services;

            public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
            {
                $this->services = $serviceLocator->getServiceLocator();
            }

            public function getServiceLocator()
            {
                return $this->services;
            }

            public function dispatch(Request $request, Response $response = null)
            {
            }
        }
我们也可以这样做:

您可以使用doctrine模块中的
ObjectManagerAwareInterface

use DoctrineModule\Persistence\ObjectManagerAwareInterface;
use DoctrineModule\Persistence\ProvidesObjectManager as ProvidesObjectManagerTrait;

class EmailJob extends AbstractJob implements ObjectManagerAwareInterface
{
    use ProvidesObjectManagerTrait;
}
这样,您的工作中就有了ObjectManager