我想从我的symfony应用程序的数据库生成实体类.所以我遵循以下三个步骤(从如何从现有数据库生成实体)
1. php app/console doctrine:mapping:convert yml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force
2. php app/console doctrine:mapping:import AcmeBlogBundle yml
3. php app/console doctrine:generate:entities AcmeBlogBundle
Run Code Online (Sandbox Code Playgroud)
为了解这三个命令的工作原理,我刚从./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm中删除了所有文件.我在一个表中添加了一个字段.之后我遵循了命令-2和命令-3.
我检查了修改后的表的实体是否有新字段.新领域存在于实体中.
那么我们为什么要使用doctrine:mapping:convert命令来从现有数据库生成实体?
我不太明白你们在那里说什么,因为对我来说,3个命令是需要的,并且它们之间是不同的.
如果要内省数据库模式以生成所需的symfony ORM文件和实体,则必须使用3个命令.
这是他们做的:1)
php app/console doctrine:mapping:convert yml ./src/< vendor>/< bundle_name>/Resources/config/doctrine/metadata/orm --from-database --force
Run Code Online (Sandbox Code Playgroud)
这通过内省从DB构建实体映射文件.对于DB上的每个表,这将仅生成<entity> .orm.yml:
< proj_folder>/src/< vendor>/< bundle_name>/Resources/config/doctrine/metadata/orm/< entity>.orm.yml
Run Code Online (Sandbox Code Playgroud)
2)
php app/console doctrine:mapping:import < vendor>< bundle_name> annotation**
Run Code Online (Sandbox Code Playgroud)
为从DB中内省的每个表生成实体类:
OUTPUT: writing /var/www/html/< project_folder>/src/< vendor>/< bundle_name>/Entity/< entity>.php
3)
php app/console doctrine:generate:entities < vendor>< nameBundle>**
Run Code Online (Sandbox Code Playgroud)
这仅为所有实体类属性生成getter和setter.
一旦生成了实体类,Doctrine 就足够智能,可以获取从实体类导入映射所需的所有信息,而不需要在第一步中获取的类元数据。如果您已删除元数据和实体类,那么您将无法在不运行步骤 1 的情况下运行步骤 2。
| 归档时间: |
|
| 查看次数: |
12854 次 |
| 最近记录: |