Symfony 4 Doctrine逆向工程问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony 4 Doctrine逆向工程问题相关的知识,希望对你有一定的参考价值。

我试图使用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 AppAppBundleEntity;

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

use AppAppBundleEntityUser;

并使用学说来获取

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

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

enter image description here

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

enter image description here

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

答案
  1. 在Symfony 4中,AppBundle已被弃用。建议将所有代码放在 App namespace(AppEntityUser)中。它现在是所有Symfony生成器的默认行为。
  2. 如果你想使用一个包,你应该:

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

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

以上是关于Symfony 4 Doctrine逆向工程问题的主要内容,如果未能解决你的问题,请参考以下文章

APC 没有为 Symfony.4/Doctrine 应用程序带来任何性能提升?

无法在 Symfony 4.1 项目中安装 Doctrine Migrations V2

Symfony2 2.3.7 -Doctrine 2.4.1:ManyToMany 关系未保存到数据库

Symfony 4:调用 getter 后,Doctrine2 LAZY Fetch Collection 仍然为空

Symfony 4 Doctrine存储库不返回一个字段值

Symfony3.4 / Doctrine迁移 - 驱动程序中发生异常:SQLSTATE [HY000] [2002]没有这样的文件或目录