如何从一个现有的数据库生成实体

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何从一个现有的数据库生成实体

当开始工作在一个全新的项目,使用了一个数据库,两个不同的情况是天生的。在大多数情况下,数据库模型是从头开始设计和建造的。但是,有时候你会可能与现有的和不变的数据库模型。幸运的是,教义附带了一些工具来帮助从你现有的数据库生成模型类。

请注意

随着教义的工具文档欧宝官网下载app说,逆向工程是一个一次性的过程开始于一个项目。学说能够将大约70 - 80%的必要的基于字段的映射信息,索引和外键约束。原则不能发现逆关联,继承类型、实体主键与外键或语义关联的操作如瀑布或生命周期事件。一些额外的工作之后生成的实体将是必要的设计每一个适合您的域模型特异性。

本教程假设您使用的是一个简单的博客应用程序使用以下两个表:blog_postblog_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 /控制台学说:映射:导入“App \实体”注释——路径= src /实体

这个命令行工具要求教义内省数据库并生成新的PHP类元数据注释src /实体。这个生成两个文件:BlogPost.phpBlogComment.php

提示

也可以生成元数据文件为XML或YAML:

1
美元php bin /控制台学说:映射:导入“App \实体”xml——路径=配置/学说

在这种情况下,确保适应相应的映射配置:

1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ doctrine.yaml原则:#……orm:#……映射:应用:is_bundle:类型:yml#设置为xml的xml映射dir:“% kernel.project_dir % / config /学说”前缀:“App \实体”别名:应用程序

生成getter和setter或PHP类

现在生成的PHP类属性和元数据注释,但他们做的有getter或setter方法。如果您生成的XML或YAML的元数据,您甚至没有PHP类!

生成getter / setter方法(或失踪创建如果neceesary类),运行:

1 2
/ /生成getter / setter方法美元php bin /控制台:实体——再生应用

请注意

如果你想要对多关系,您将需要手动添加到实体(例如,添加一个评论财产博客)或生成的XML或YAML文件。添加一个一对多的特定实体定义部分inversedBy的mappedBy碎片。

现在可以使用生成的实体。玩得开心!

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。