代码之家  ›  专栏  ›  技术社区  ›  Fels

未找到使用Symfony 4和MongoDB/service的新项目

  •  1
  • Fels  · 技术社区  · 7 年前

    我正试图用MongoDB创建一个新的Symfony4项目。

    首先,我使用以下文档创建了一个Symfony4项目: https://symfony.com/doc/current/setup.html

    然后,我使用以下文档包括MongoDB: http://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.html

    我试图尽可能地遵循说明(例如,我不需要向app/AppKernel.php添加任何内容,但MongoDB自动添加到config/bundles.php)。

    现在我认为一切都应该正常,但我的Symfony应用程序找不到MongoDB服务:

    You have requested a non-existent service "doctrine_mongodb". 
    Did you mean one of these: "http_kernel", "request_stack", "router"?
    in ServiceLocator.php (line 48)
    

    控制器:

    namespace App\Controller;
    
    use App\Document\Chapter;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Response;
    
    class DefaultController extends AbstractController {
    
        public function createAction() {
            $test = new Chapter();
            $test->setHeadline('Test');
    
            $dm = $this->get('doctrine_mongodb')->getManager();
            $dm->persist($test);
            $dm->flush();
    
            return new Response('Created product id '.$test->getId());
        }
    }
    

    但是,如果我在控制台上执行此操作:

    php bin/console debug:container
    

    我得到了一份服务清单,包括:

    doctrine_mongodb                                                                             Doctrine\Bundle\MongoDBBundle\ManagerRegistry
    doctrine_mongodb.odm.default_connection                                                      Doctrine\MongoDB\Connection
    doctrine_mongodb.odm.default_document_manager                                                Doctrine\ODM\MongoDB\DocumentManager
    doctrine_mongodb.odm.document_manager                                                        alias for "doctrine_mongodb.odm.default_document_manager"
    

    所以这个服务似乎在那里,但Symfony无法从我的应用程序加载它。

    你知道我怎么解决这个问题吗? 是否有可能Mongo DB服务器连接不工作,并且由于某种原因它没有被记录,服务无法加载?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Badarau Petru    6 年前

    你可以使用自动布线

    use Doctrine\ODM\MongoDB\DocumentManager as DocumentManager;

    public function createProduct(DocumentManager $dm)

        2
  •  2
  •   Manuel E Carpio    7 年前

    尝试从“Controller”扩展到“AbstractController”。

    class DefaultController extends Controller