模型定义


模型类通常需要继承系统的User\Model类或其子类,下面是一个User\Model\RegModel类的定义:

namespace User\Model;
use Common\Model\CommonModel;
class RegModel extends CommonModel {
    
}

模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表。

模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型层的名称(默认定义是Model),例如


模型名 约定对应数据表
RegModel cmf_reg


如果你的规则和上面的系统约定不符合,那么需要设置Model类的数据表名称属性,以确保能够找到对应的数据表。

举个例子来加深理解,例如,在数据库里面有一个cmf_reg表,而我们定义的模型类名称是RegMode.class.php,按照系统的约定,这个模型的名称是Reg,对应的数据表名称应该是cmf_reg(全部小写),但是现在的数据表名称是cmf_regs,因此我们就需要设置tableName属性来改变默认的规则

namespace User\Model;
use Common\Model\CommonModel;
class RegModel extends CommonModel {
   protected $tableName = 'regs'; 
}

现在举个验证的模型例子:

我们现在User定义一个Model命名为:RegModel.class.php

namespace User\Model;
use Common\Model\CommonModel;
class RegModel extends CommonModel {
    protected $_validate = array (
        array('name', 'require', '姓名不能为空!', 1 ),
        array('mobile','require','手机不能为空!',1),
    );
}

在控制器调用这个Model

$Reg = D("User/Reg");// 实例化User对象
if ($Reg->create($_POST['post']) === false){ // 创建数据对象
    // 如果创建失败 表示验证没有通过 输出错误提示信息
    $this->error($Reg->getError());
}

如果在Model定义的是function里面的话在控制器调用就要先指向

namespace User\Model;
use Common\Model\CommonModel;
class RegModel extends CommonModel {
function validateEmailMobile(){
    $validate = array (
        array('name', 'require', '姓名不能为空!', 1 ),
        array('mobile','require','手机不能为空!',1),
    );
    }
 }
D('Reg')->validateEmailMobile();
$User = M("User"); // 实例化User对象if (!$User->validate($rules)->create($_POST['post'])){     // 如果创建失败 表示验证没有通过 输出错误提示信息
     exit($User->getError());
}else{     // 验证通过 可以进行其他数据操作}



评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发表话题

源素材推荐

提问必知

0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复

积分规则

1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号


ThinkCMF 8.0.0发布啦!祝大家节日快乐! 立即体验!