首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >symfony 4通过依赖注入获得原理documentManger

symfony 4通过依赖注入获得原理documentManger
EN

Stack Overflow用户
提问于 2018-02-19 03:40:01
回答 2查看 693关注 0票数 0

我必须在项目中使用Symfony 4和MongoDB。我可以像这样访问控制器中的DocumentManager:

代码语言:javascript
运行
复制
$dm = $this->get('doctrine_mongodb')->getManager();

在运行时,但不像其他服务(例如Doctrine EntityManager)通过任何方法或构造函数的参数。所以我不知道如何在服务中达到它。如果我不在services.yaml中注册它,Symfony就找不到它,这是很明显的。但如果我尝试注册:

代码语言:javascript
运行
复制
Doctrine\:
    resource: '../vendor/doctrine/mongodb-odm/lib/Doctrine/*'

它也返回一个错误:(1/1) FatalErrorException编译错误:不能使用'Bool‘作为类名,因为它是在Bool.php中保留的(第26行)

它似乎与php 7不兼容,而Symfony 4却需要它。

有谁知道如何解决这个矛盾吗?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-10 04:13:28

我找到了一个可能对其他人有用的解决方案: dev-master / 3.5.x-dev版本的doesn/mongodb-odm-bundle不会出现问题。https://packagist.org/packages/doctrine/mongodb-odm-bundle#dev-master最初的composer.json需要"^3.0“,所以composer下载了3.4.1,这是最新的稳定版本。将版本修改为"3.5.x-dev“至少在开发时解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2019-08-15 01:35:08

您可以注入ManagerRegistry并从中获取管理器

代码语言:javascript
运行
复制
<?php

use Doctrine\Bundle\MongoDBBundle\ManagerRegistry;

class SomeController
{
    public function someAction(ManagerRegistry $managerRegistry)
    {
        $user = new Object();
        $user->setName("John");

        $dm = $managerRegistry->getManager();

        $dm->persist($user);
        $dm->flush();
       //do something
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48855805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档