首页 » ThinkPHP » 正文

thinkphp3.0模型更新说明

thinkphp3.0模型更新说明:

  • [新增] 添加自动验证的批量验证功能 需要在模型类里面设置patchValidate属性为true 默认为false,批处理验证采用getError() 方法获取后的错误信息是一个数组 需要自行处理。
  • [新增] Model增加check方法 用于个别需要的情况手动验证数据,支持部分自动验证的规则 用法 check(‘验证数据’,’验证规则’,’验证类型’) 验证类型支持 in between equal length regex expire ip_allow ip_deny,默认为regex 结果返回布尔值 $model->check($value,’email’); $model->check($value,’1,2,3′,’in’);
  • [新增] 自动验证规则增加between 用于判断提交数据是否在一个范围之内 例如 array(‘num’,’10,100′,’必须在10到100之间’,0,’between’) 完善in规则,支持逗号分隔的字符串 array(‘num’,’1,2,5′,’只能选择1,2,5′,0,’in’) 和下面的定义等效 array(‘num’,array(1,2,5),’只能选择1,2,5′,0,’in’)
  • [新增] Model增加子查询支持,使用子查询的时候 select方法的参数必须为false,例如: // 首先构造子查询SQL $subQuery = $model->field(‘id,name’)->table(‘tablename’)->group(‘field’)->where($where)->order(‘status’)->select(false); // 进行查询 $model->table($subQuery.’ a’)->where()->order()->select() 构造的子查询SQL可用于TP的连贯操作方法,例如table where等
  • [新增] 视图模型的视图定义添加实际表名定义支持 使用 ‘_table’=>’test_db.test_table’
  • [新增] 自动验证添加操作有效期验证 支持时间戳和日期格式定义 定义格式 array(‘任意字段’,’2011-10-1,2011-12-31′,’已经过了投票时间 ‘,self::MUST_VALIDATE,’expire’,self::MODEL_INSERT)
  • [新增] 字段验证方式 增加长度验证,格式定义如下: 区间格式定义 array(‘username’,’3,6′,’用户名长度必须大于等于3小于等于 6′,self::MUST_VALIDATE,’length’,self::MODEL_INSERT) 指定长度定义 array(‘mobile’,’11′,’手机号码长度必须11位 ‘,self::MUST_VALIDATE,’length’,self::MODEL_INSERT)
  • [新增] 增加查询缓存支持
  • [新增] 增加联合查询union支持
  • [新增] 查询条件增强 支持 $map['a&b'] $map['a|b']
  • [新增] 增加了getFieldBy*** 查询
  • [新增] 增加了_sql方法 替代 getlastsql方法
  • [新增] Model类的field方法支持NOT机制 例如 field(‘id,name’) 表示查询id,name字段 field(‘id,name’,true); 表示查询除id,name之外的字段
  • [新增] Model增加parseFieldsMap方法 用于处理字段映射的数据写入和读取 create方法已经内置对字段映射的数据写入支持 字段映射的读取需要手动处理 在find方法之后调用,例如: $data = $Model->where()->find(); parseFieldsMap($data);
  • [新增] query和execute增加第二个参数 表示是否需要解析SQL 默认为false 表示直接执行sql 如果设为true 则会解析sql中特殊字符串 (需要配合连贯操作)例如 支持 $model->table()->where()->field()->query(‘select %FIELD% from %TABLE% %WHERE%);
  • [新增] Db类增加buildSelectSql方法 用于生成查询sql Model类增加buildSql方法 用于生成子查询SQL 用法 $Model->where()->field()->order()->limit()->buildSql(); 和select用法一样 buildSql方法必须用在连贯操作的最后
  • [新增] Model类增加_parseType 用于字段类型检测和转换
  • [新增] Model类增加_after_db回调接口
  • [修正] 修正模型类的find方法当主键值为0的时候的BUG
  • [改进] 改进Model类和M方法 Model类架构方法增加dbName支持和tablePrefix参数 M方法可以直接用于跨库和不同数据表前缀支持
  • [改进] 表单令牌验证增强 支持多窗口令牌
  • [改进] 自动验证增强 增加between length expire ip_allow ip_deny等规则
  • [改进] 优化unique验证规则
  • [改进] 多数据库操作支持,包括M方法支持和Model类的切换数据库的Db方法 支持
  • [改进] join方法增强
  • [改进] getField方法增加用法支持 并支持跨库和表操作
  • [改进] Model的add和save方法 如果用了$this->data 则及时清空 避免混淆
  • [改进] Model的getlastsql方法支持当前模型 全局请用M()
  • [改进] 关联模型跨库操作的改进 操作关联的时候M方法改用D方法
  • [改进] D方法格式为:[项目://][分组/]模型
  • [改进] Model类的db方法的第二个config参数支持配置参数
  • [改进] create方法中的检查字段映射 放到状态检查之前 用于需要映射主键的情况
  • [改进] Model类create方法中生成数据对象 增加 autoCheckFields属性的判断 如果autoCheckFields关闭 则不过滤表单中的非数据表字段
  • [改进] 优化Model类的flush方法 在没有获取到字段信息则直接返回false 也不会记录字段缓存
  • [改进] 字段缓存文件名 增加数据库前缀
  • [改进] Db类对page连贯操作的完善支持
  • [改进] 令牌验证放到自动验证成功后 避免验证错误后 表单令牌错误的情况
  • [改进] 改进模型类的create方法对数据的验证
  • [改进] 修正Model类的getTableName中关于dbName的获取
  • [改进] Model类db方法增加params参数 用于切换数据库的时候传人额外的模型参数 原则上支持任意Model类的属性
  • [删除] 废除model类的findall 如需要用select替代或者在公共模型类里面添加findall定义
  • [删除] 删除高级模型类里面的切换数据库相关方法 2.1版本以上推荐直接使用模型类的db方法切换
  • [删除] 去掉setField getField setInc setDec方法的condition条件参数 用连贯操作where替代
  • [删除] 删除了tableSuffix属性 可以用trueTableName属性替代

技术分享,技术交流,小涛与您共同成长……

发表评论