使用Symfony2和Doctrine导入数据库

时间:2014-07-10 19:48:50

标签: php symfony doctrine-orm doctrine

我正在尝试使用命令

doctrine:mapping:import

将数据库导入我的项目,但是我不希望database.orm.yml文件位于Bundle中我想让orm和Entity文件位于我的src文件夹中的Static目录中。上面的命令要求我提供包名称。我的问题是,如何将映射文件导入文件夹./src/Entity/orm文件夹,而不是导入捆绑包?这是否可能?

./src/Entity/orm        <-- Directory having the .yml files
./src/Entity/Repository <-- The repository classes
./src/Entity            <-- The Entity Classes here

1 个答案:

答案 0 :(得分:3)

我将用我发现的工作来回答我自己的问题。

以下命令将从数据库中将实体生成到指定文件中,并将命名空间添加到类中;

php app/console doctrine:mapping:convert annotation ./src/Entity --from-database --force --namespace="Entity\\";

要获得完整的答案,我本可以使用:

php app/console doctrine:mapping:convert annotation ./src/Entity --from-database --force --namespace="Entity\\";

生成yaml orm文件。然后手动将名称空间添加到每个名称空间,然后运行:

php app/console doctrine:generate:entities ./src/Entity/orm

正确设置Symfony2 config.yml参数后。然而,这可能是一种浪费的努力,因为我可以轻松地使用注释。

我从这次经历中学到的是,如果您使用的是代码优先开发策略,那么使用yaml orm文件和生成实体是一个很好的功能。如果你只是试图从一个设计不佳或膨胀的数据库中生成一个实体框架,那么使用注释会让人头疼。

现在我正在做什么,因为你无法从数据库中指定repositoryClasses。只是在我开发时添加存储库类。并非每个200多个表都需要一个存储库类。

注意:此数据库并非“内部”设计,而且普遍的共识是它很糟糕且需要重新设计,但目前的时间限制不允许我们这样做......