Symfony 4 Doctrine逆向工程问题

问题描述 投票:2回答:1

我试图使用doctrine从mysql数据库生成symfony 4中的实体。

首先,我在名为AppBundle的目录中创建了一个名为AppBundle.php的包

然后我使用以下方法生成模式的xml:

php bin/console doctrine:mapping:import --force AppBundle xml

这将在AppBundle文件夹中创建一个名为Resources的文件夹,然后在另一个名为config和doctrine的文件夹中创建,所有orm.xml文件都放在那里。

然后我尝试使用以下方法生成实体:

php bin/console doctrine:mapping:convert annotation ./src/Entity

这将在Entity文件夹中创建以下文件夹:

  • 实体 应用 的appbundle 实体

并且所有.php实体文件都放在第二个Entity文件夹中。

enter image description here

.php实体文件具有以下命名空间

namespace App\AppBundle\Entity;

在我的控制器中,我添加了名称空间

use App\AppBundle\Entity\User;

并使用学说来获取

$users = $this->getDoctrine()
        ->getRepository(User::class)
        ->findAll();

但是当我运行应用程序时,我收到此错误

enter image description here

现在,当我将第二个Entity文件夹移动到AppBundle文件夹中时。该应用程序工作。

enter image description here

有没有办法生成没有Symfony的实体生成App文件夹或AppBundle文件夹?

php symfony doctrine-orm symfony4
1个回答
0
投票
  1. 在Symfony 4中,AppBundle已被弃用。建议将所有代码放在\ App namespace(\App\Entity\User)中。它现在是所有Symfony生成器的默认行为。
  2. 如果你想使用一个包,你应该:

2.1。配置像 orm: mappings: AppBundle: is_bundle: true type: xml prefix: 'AppBundle\Entity' 2.2这样的学说。使用php bin/console doctrine:mapping:convert annotation ./src

您还应该正确配置composer autoload和Symfony配置。

© www.soinside.com 2019 - 2024. All rights reserved.