Symfony 5 getDoctrine->getRepository() 为 foreach() Doctrine CachedReader.php

问题描述

朋友们,有一个我无法解决的问题。按照 Symfony 5 文档执行会引发异常:为 foreach () 指定的参数无效。堆栈跟踪指向供应商/学说/注释/lib/Doctrine/Common/Annotations/CachedReader.PHP: 107。本质上它不允许我访问控制器中的存储库。重置整个 Symfony 缓存有助于一个请求,然后再次重复异常。尝试使用缓存访问目录访问,没有帮助。我会很高兴这个决定。

实体:

/**
 * @ORM\Entity(repositoryClass=AuthorRepository::class)
 */
class Author
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     * @ORM\Column(type="integer")
     */
    private $id;

    // ...
}

存储库:

class AuthorRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry)
    {
        parent::__construct($registry,Author::class);
    }
}

控制器:

class AuthorController extends AbstractController
{
    /**
     * @Route("/author/create",name="author-create")
     * Method ({"GET","POST"})
     */
    public function actionCreate(Request $request,ValidatorInterface $validator): Response
    {
        // throw ErrorException !!!
        $repository = $this->getDoctrine()->getRepository(Author::class);
    }
  
    // ...
 }

method show Exception

Stack Trace

where the exception is throw

解决方法

这些是容器内的访问设置。这篇文章帮助了我: Folder permissions when running Symfony in Docker environment

Dockerfile:

&& usermod -u 1000 www-data