首页 > 解决方案 > 尽管使用命名空间,但使用 make:entity 在控制器中无法识别的实体类

问题描述

Symfony 4中,使用bin/console我创建了新实体:

php bin/console make:entity Being
...

它创建Entity/Being.phpRepository\BeingRepository.php文件。

后来我也使用了make:migrationand doctrine:migration:migrate,我的更改现在在数据库中可见。

问题是,当我在以下位置编写简单的控制器时Controller/DefaultController.php

namespace App\Controller;
use App\Entity\Being;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class DefaultController extends AbstractController
{

/**
 * @Route("/", name="blog_index")
 */
public function index()
{
    $entityManager = $this->getDoctrine()->getManager();
    $beings =  $entityManager->getRepository(Being::class);
    return $this->render('default/index.html.twig',
        ["beings" => $beings->findAll()]);
}
}

我得到错误:

类 'App\Entity\Being' 不存在

我也尝试以相同的结果Being显式更改。\App\Entity\Being

请注意,我没有触及由make:entity(Entity/Being.phpRepository\BeingRepository.php) 创建的文件。第一个看起来像这样:

<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\BeingRepository")
 */
class Being
{
...

我错过了什么吗?

标签: phpsymfonydoctrinesymfony4

解决方案


尝试只执行作曲家dump-autoload或简单地composer dumpa在控制台中执行。在大多数情况下,它会有所帮助。

composer dumpa

推荐阅读