You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony使用Doctrine报Registry对象不可调用错误求助

错误原因

你通过控制器方法参数注入的$doctrine是ManagerRegistry类型的实例对象(运行时实际为DoctrineBundle的Registry类实例),不是可调用的函数。你写$doctrine()属于把对象当函数调用,但该类没有实现__invoke魔术方法,不支持这种调用形式,因此触发「对象不可调用」的报错。

这类写法错误大多是受旧版本Symfony控制器自带的$this->getDoctrine()方法影响,混淆了注入对象和框架内置方法的调用形式,多写了括号。

修复方案

删除$doctrine后面多余的调用括号,直接以对象方法调用的形式访问getRepository()即可,修正后的完整控制器代码如下:

public function index(ManagerRegistry $doctrine): Response
{
    $articles  = $doctrine->getRepository(Article::class)->findAll();

    return $this->render('blog/index.html.twig', [
        'controller_name' => 'BlogController',
        'articles' => $articles,
    ]);
}

内容的提问来源于stack exchange,提问作者user13906062

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:01:41