- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CodeSmith 为 Yii Framework 创建⽣成 ActiveRecord 的代码模板
为 Yii Framework 创建⽣成 ActiveRecord 的代码模板
在 CodeSmith 使⽤教程(3): ⾃动⽣成 Yii Framework ActiveRecord 我们通过
SchemaExploer 为 Yii Framework 从数据库⽣成简单的 ActiveRecord 类,没有考虑到表
和表之 的关系。本例我们使⽤ CodeSmith 为 Yii Framework 创建⼀个通⽤的代码模
板,可以使⽤上例介绍的SchemaExploer ,不过在查看 CodeSmith ⾃带的例⼦中有个
⽣成 Hibernate 的例⼦,这个模板的使⽤可以参见 CodeSmith 使⽤教程( ): 概述 ,
CodeSmith 提供了这个模板的源码,使⽤到了 CodeSmith .SchemaHelper (CodeSmith
没有提供相应的⽂档),不过可以通过阅读 NHiberante 的模板了解其⼀般⽤法。
为⽣成 Yii Framework ActiveRecord 类之 的 relation ,先要了解⼀下表和表之 的关
系:
两个 AR 类之 的关系直接通过 AR 类所代表的数据表之 的关系相关联。 从数据库
的⾓度来说,表 A 和 B 之 有三种关系:⼀对多 (one-to-many ,例如 tbl_user 和
tbl_post ),⼀对⼀ ( one-to-one 例如 tbl_user 和tbl_profile )和 多对多 (many-to-many
例如 tbl_category 和 tbl_post )。 在 AR 中,有四种关系:
BELONGS_TO (属于): 如果表 A 和 B 之 的关系是⼀对多,则 表 B 属于 表
A (例如 Post 属于 User);
HAS_MANY (有多个): 如果表 A 和 B 之 的关系是⼀对多,则 A 有多个 B
(例如 User 有多个 Post);
HAS_ONE (有⼀个): 这是 HAS_MANY 的⼀个特例,A 最多有⼀个 B (例如
User 最多有⼀个 Profile);
MANY_MANY: 这个对应于数据库中的 多对多 关系。 由于多数 DBMS 不直接
⽀持 多对多 关系,因此需要有⼀个关联表将 多对多 关系分割为 ⼀对多 关系。
在我们的⽰例数据结构中,tbl_post_category 就是⽤于此⽬的的。在 AR 术语
中,我们可以解释 MANY_MANY 为 BELONGS_TO 和 HAS_MANY 的组合。
例如,Post 属于多个 (belongs to many ) Category ,Category 有多个 (has
many ) Post .
本例还是使⽤ Chinook 数据库,修改 Yii Framework 开发教程(27) 数据库-关联 Active
Record ⽰例。数据表之 的关系如下:
CodeSmith 中 PLINQO-NH 代码位置:
缺省⽬录为 C:\Program Files
(x86)\CodeSmith\v6.5\Samples\Templates\Frameworks\PLINQO-NH
CodeSmith .SchemaHelper 定义的主要类有:
⼏个主要的类为
EntityManager 管理所有的 Entity (对应于整个数据库)
Entity 实体类 (对应到单个表,视图)
IAssoication 关系 (定义表和表之 的关系)
AssoicationType 关系的类型 (见下表)
根据 AssociationType ,数据库之 的关系以及 Yii AR ⽀持的⼏种关系,可以定义下
表:
整个模板也是采⽤主-从模板的⽅式,主模板枚举 EntityManager 中的每个 Entity ,然
后调⽤⼦模板为每个表 ⽣成 AR 类:
public void Generate()
{
EntityManager entityManager = CreateEntityManager();
foreach(IEntity entity in entityManager.En
您可能关注的文档
- 导入:物流概念、理念与意义.pdf
- ch2-2 PL0编译程序实现.ppt
- ch03SQL Server服务器的安装及配置.pdf
- CH3_单体宣告和资料流模式描述法.ppt
- ch3_类及对象的基本概念.ppt
- Ch3_逻辑门高速特性.pdf
- ch04_调试与错误处理.docx
- 导数定义应用.docx
- Ch4 供求弹性和其应用.ppt
- ch4 数据库的设计及创建.ppt
- GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 中国国家标准 GB/T 32151.38-2024温室气体排放核算与报告要求 第38 部分:水泥制品生产企业.pdf
- 《GB/T 22069-2024燃气发动机驱动空调(热泵)机组》.pdf
- GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 22069-2024燃气发动机驱动空调(热泵)机组.pdf
- 中国国家标准 GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法.pdf
- 《GB/T 11064.1-2024碳酸锂、单水氢氧化锂、氯化锂化学分析方法 第1部分: 碳酸锂含量的测定 滴定法》.pdf
- GB/T 1148-2024内燃机 铝活塞.pdf
- 中国国家标准 GB/T 1148-2024内燃机 铝活塞.pdf
最近下载
- ATB-25目标配合比完整版.doc
- 2024年秋季新科粤版九年级上册化学全册教案.pdf
- 初中物理:浙江省杭州市学军中学物理试题(中学自主招生)(含参考答案).pdf VIP
- 毕业设计--35kv箱式变电站设计.doc VIP
- 最新浙江省杭州市萧山中学自主招生考试数学试卷.docx VIP
- 钢制电缆桥架工程技术规程,T_CECS31-2017.docx
- 小学美术微项目化学习案例.docx VIP
- (精优教学设计+素材)六年级上册信息技术-第8课制定行驶路线图制作引导动画粤教版(B版) (8份打包).docx
- 中联QTZ100(W6013-6A)用户手册使用说明书.pdf
- (精优教学设计+素材)五年级上册信息技术-第8课 看谁算得快粤教版(B版) (6份打包).docx
文档评论(0)