错误:传递给 App\Repository\FooRepository::__construct() 的参数 1 必须是 Doctrine\Common\Persistence\ManagerRegistry 的实例

Tho*_*uer 11 php symfony doctrine-orm

更新到doctrine/doctrine-bundle 2.1.2我收到此错误后:

传递给 App\Repository\FooRepository::__construct() 的参数 1 必须是 Doctrine\Common\Persistence\ManagerRegistry 的实例,给出的 Doctrine\Bundle\DoctrineBundle\Registry 实例,在 ...

我的存储库如下所示:

namespace App\Repository;

use App\Entity\Foo;
use Doctrine\ORM\QueryBuilder;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;

class FooRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry)
    {
        parent::__construct($registry, Foo::class);
    }
}
Run Code Online (Sandbox Code Playgroud)

=> 请参阅下面我自己的答案。

Tho*_*uer 39

只需将这use一行从

use Doctrine\Common\Persistence\ManagerRegistry;
Run Code Online (Sandbox Code Playgroud)

use Doctrine\Persistence\ManagerRegistry;
Run Code Online (Sandbox Code Playgroud)

文档:https : //symfony.com/doc/current/doctrine.html#querying-for-objects-the-repository

  • 哦,太棒了,在 Symfony 4.4 上运行“composer update”会将“doctrine/common”从“2.x”提升到“3.0.2”——在没有任何通知的情况下破坏了所有以前生成的存储库类。太棒了。我喜欢进行小的更新并破坏我的代码库。 (10认同)