大可网

您现在的位置是:首页>文章详情

文章详情

qeephp 定义模型

2022-01-06 601热度
摘要:模型的唯一用途就是封装业务逻辑,因此对于模型,QeePHP 竭尽所能提供了各种支持。虽然自动生成的模型类已经包括了大部分设置,但我们还需要在这个基础上根据业务需求进行定制。 一个模型由几个方面组成: 属性:定义模型有哪些属性、属性的类型以及属性的行为和验证规则等 行为:添加实现业务逻辑需要的方法,让模型逐步逼近实际的需求 数据:由属性和存储模型属性的数据表组成,但属性不一定要和数据表...
模型的唯一用途就是封装业务逻辑,因此对于模型,QeePHP 竭尽所能提供了各种支持。虽然自动生成的模型类已经包括了大部分设置,但我们还需要在这个基础上根据业务需求进行定制。
一个模型由几个方面组成:
属性:定义模型有哪些属性、属性的类型以及属性的行为和验证规则等
行为:添加实现业务逻辑需要的方法,让模型逐步逼近实际的需求
数据:由属性和存储模型属性的数据表组成,但属性不一定要和数据表一一对应
关系:模型需要互相配合来实现业务需求,因此关系也是模型的一部分
__define() 方法
打开模型的定义文件,在 __define() 方法中可以找到模型的详细定义。这些定义分为几个部分:
指定存储模型使用的数据表
属性和关联的定义,例如只读属性、虚拟属性、关联等
对属性的验证规则
安全性方面的定义
行为插件的定义
模型的基本定制都在 __define() 方法中完成。
__define() 方法应该返回一个数组。这个数组描述了模型的方方面面:
table_name
指示使用什么数据表来存放这个模型的属性值。
table_class
指示使用哪一个表数据入口对象来负责对象属性值的存取工作,table_class 的值应该是一个类名称,例如 Table_Posts。如果指定了这个设置,则自动忽略 table_name 设置。
table_config
指示连接数据表时的设置,通常用于进行跨数据库访问或指定不同的数据表前缀。table_config 的值应该是一个数组,详细设置请参考表数据入口的相关文档。
props
指示模型中各个属性、关联的设置。没有在这里指定设置的数据表字段自动成为模型的普通属性。例如数据表中有 id、title 两个字段,而 props 中没有指定 title 属性的设置,则 title 字段成为该模型的 title 属性,并且可以读写。关于属性的设置,参考本章节后续的内容。
behaviors
指示该模型要使用的行为插件。behaviors 的值可以是一个包含多个插件名的数组或字符串,例如“fast_uuid, serializefiled”表示使用 serializefiled和 fast_uuid两个行为插件。
behaviors_settings
指定每个行为插件的设置。behaviors_settings 的键名是插件名,键值则是一个包含该插件设置的数组。
validations
设置模型的自动验证规则,当模型保存时,这些自动验证规则将被用于检查模型的有效性。
create_reject
在数据库中新建对象时,要忽略掉的属性。有些时候,我们的数据库结构要求在创建新记录时不能指定某些字段的值,这时就可以通过 create_reject 设置来指定要排除的属性(属性名会自动对应到字段名)。
update_reject
效果与 create_reject 类似,但仅仅作用在更新数据库中的已有对象时。
create_autofill
指示在数据库中新建对象前,哪些属性的值会被自动替换为指定值。假设有一个业务逻辑“新订单的状态为待审核”,那么我们就可以在 create_autofill 中指定状态属性的值为特定值,从而保证不管从何种途径创建新的订单对象,其状态都是“待审核”。
update_autofill
效果与 create_autofill 类似,但仅仅作用在更新数据库中的已有对象时。
attr_accessible
指示在通过 new 方法构造对象时能够指定的属性值。这个设置是一个安全性设置,具体说明请参考本章节的后续内容。
attr_protected
指示在通过 new 方法构造对象时不允许指定的属性值。如果指定了 attr_accessible 设置,则忽略 attr_protected 设置。具体说明请参考本章节的后续内容。

相关文章

文章评论

暂无任何评论,请君畅言