当前位置: 首页 > 知识库问答 >
问题:

如何在服务中注入存储库?

黄博艺
2023-03-14

我正在用Symfony制作简单的应用程序。我在这里配置了服务

services:
app.service.comments_service:
    class: AppBundle\Service\CommentsService
    autowire: true

app.service.projects_service:
    class: AppBundle\Service\ProjectService
    autowire: true
app.service.files_service:
        class: AppBundle\Service\FilesService
        autowire: true
app.service.users_service:
            class: AppBundle\Service\UserService
            autowire: true

我的服务使用存储库(例如,评论服务使用评论存储库),这里是CommentsService的构造函数

性质

    private $entityManager;
    private $session;
    private $manager;
    private $commentsRepository;

构造函数:

public function __construct(
    EntityManagerInterface $entityManager,
    Session $session,
    ManagerRegistry $manager,CommentsRepository $commentsRepository)
{
    $this->entityManager = $entityManager;
    $this->session = $session;
    $this->manager = $manager;
    $this->commentsRepository = $commentsRepository;
}

当我试图运行我的应用程序我得到这个错误

PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\Repository\CommentsRepository”:方法“docr-ine\ORM\EntityRepository::\uu-Construction()”的参数“$em”必须具有类型提示或显式给定值。无法自动连线服务“app.service.comments\u service”:方法“AppBundle\service\CommentsService::\uu构造()”的参数“$commentsRepository”引用类“AppBundle\Repository\commentsRepository”,但不存在此类服务。在C:\xampp\htdocs\WINbetTaskManager\vendor\symfony\symfony\src\symfony\Component\DependencyInjection\Compiler\AutowirePass中。菲律宾比索:285

有没有办法解决这个问题?

共有1个答案

张献
2023-03-14

所以我做了一些实验,这似乎是有效的:

// services.yml
AppBundle\Repository\CommentsRepository:
    factory: 'doctrine.orm.entity_manager:getRepository'
    arguments: ['AppBundle\Entity\Comments']

这将为autowire提供足够的信息来注入存储库。

 类似资料:
  • 问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用:

  • 问题内容: 我有一个具有简单场景(表单)的Java FX基本应用程序。我有一个Mysql Db,我正在使用Spring JPA(spring数据jpa,即存储库/实体)与之交互。 现在,由于我们知道javaFx有一些生命周期挂钩,即:init()start()和stop()。 假设我想使用JPA save() 方法在数据库中插入数据。通常,如果是我的控制器,则进行正常的数据库注入,例如: 本来可以

  • 问题内容: authService.getLoggedin()返回false或true取决于用户是否登录。然后,我想不允许他们进入网址,如果不允许的话。 但是我收到此错误:错误:[$ injector:modulerr]由于以下原因无法实例化模块WikiApp:[$ injector:unpr]未知提供程序:authService 问题答案: 在配置阶段,您只能要求提供程序($ routeProv

  • 我正在使用匕首2,我有一个定义如下的: 这是FYViewModel的: 但是,变量始终为空。 如何使用匕首2将Repositroy注入我的ViewModel?

  • 问题内容: 我想将服务注入app.config,以便可以在调用控制器之前检索数据。我这样尝试过: 服务: 配置: 但是我得到这个错误: 错误:未知提供程序:EditorApp的dbService 如何更正设置并注入此服务? 问题答案: Alex提供了无法执行您要尝试执行的操作的正确原因,因此+1。但是您遇到此问题是因为您没有完全使用解决方案的设计方式。 接受服务或函数的字符串,返回要注入的值。由于

  • 当我尝试在使用Spring MVCSpring数据MariaDB的项目中注入 @Autowired服务(@Service)上的存储库接口(扩展Crud存储库)时,我得到了以下错误: 这是我的模型: 这是我的控制器: 这是我的存储库: 这是我的服务: servlet-context.xml Ps:我在一个使用“Spring靴”的项目上使用了相同的架构,并且运行良好。 我不明白: [...] 预计至少