CodeSmith 为 Yii Framework 创建生成 ActiveRecord 代码模板.pdf

CodeSmith 为 Yii Framework 创建生成 ActiveRecord 代码模板.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档