如何从一个现有的数据库生成实体
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
如何从一个现有的数据库生成实体
当开始工作在一个全新的项目,使用了一个数据库,两个不同的情况是天生的。在大多数情况下,数据库模型是从头开始设计和建造的。但是,有时候你会可能与现有的和不变的数据库模型。幸运的是,教义附带了一些工具来帮助从你现有的数据库生成模型类。
请注意
随着教义的工具文档欧宝官网下载app说,逆向工程是一个一次性的过程开始于一个项目。学说能够将大约70 - 80%的必要的基于字段的映射信息,索引和外键约束。原则不能发现逆关联,继承类型、实体主键与外键或语义关联的操作如瀑布或生命周期事件。一些额外的工作之后生成的实体将是必要的设计每一个适合您的域模型特异性。
本教程假设您使用的是一个简单的博客应用程序使用以下两个表:blog_post
和blog_comment
。评论与一篇文章记录由于外键约束。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
创建表“blog_post”(“id”长整型数字(20.)不零AUTO_INCREMENT,“标题”varchar(One hundred.)核对utf8_unicode_ci不零,“内容”量变核对utf8_unicode_ci不零,“created_at”datetime不零、主关键(“id”))引擎=InnoDBAUTO_INCREMENT =1默认的字符集= utf8核对= utf8_unicode_ci;创建表“blog_comment”(“id”长整型数字(20.)不零AUTO_INCREMENT,“post_id”长整型数字(20.)不零,“作者”varchar(20.)核对utf8_unicode_ci不零,“内容”量变核对utf8_unicode_ci不零,“created_at”datetime不零、主关键(“id”),关键“blog_comment_post_id_idx”(“post_id”),约束“blog_post_id”外国关键(“post_id”)引用“blog_post”(“id”)在删除级联)引擎=InnoDBAUTO_INCREMENT =1默认的字符集= utf8核对= utf8_unicode_ci;
之前的配方,确保您的数据库连接参数的正确设置.env
文件(或.env.local
覆盖文件)。
第一步从现有数据库构建实体类是问教义内省数据库并生成相应的元数据文件。元数据文件描述实体类来生成基于表字段。
1
美元php bin /控制台学说:映射:导入“应用程序\实体”注释——路径= src /实体
这个命令行工具要求教义内省数据库并生成新的PHP类元数据注释src /实体
。这个生成两个文件:BlogPost.php
和BlogComment.php
。
提示
也可以生成元数据文件为XML或最终进入YAML:
1
美元php bin /控制台学说:映射:导入“应用程序\实体”xml——路径=配置/学说
在这种情况下,确保适应相应的映射配置:
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ doctrine.yaml原则:#……orm:#……映射:应用:is_bundle:假类型:xml#“yml”被标记为弃用教义v2.6 +和v3将被删除dir:“% kernel.project_dir % / config /学说”前缀:“App \实体”别名:应用程序
生成getter和setter或PHP类
现在生成的PHP类属性和元数据注释,但他们做的不有getter或setter方法。如果您生成的XML或YAML的元数据,您甚至没有PHP类!
生成getter / setter方法(或失踪创建如果有必要的类),运行:
1 2 3 4 5
/ /生成getter / setter方法为所有实体美元php bin /控制台:实体——再生App / /生成getter / setter方法为一个特定的实体美元php bin /控制台:实体——再生应用实体\ \ \ \
请注意
如果你想要对多关系,您将需要手动添加到实体(例如,添加一个评论
财产博客
)或生成的XML或YAML文件。添加一个一对多的特定实体定义部分inversedBy
和的mappedBy
碎片。
现在可以使用生成的实体。玩得开心!