thinkphp 虚拟模型怎么使用方法

thinkphp 虚拟模型怎么使用方法,第1张

虚拟模型是指虽然是模型类,但并不会真正的 *** 作数据库的模型。有些时候,我们建立模型类但又不需要进行数据库 *** 作,仅仅是借助模型类来封装一些业务逻辑,那么可以借助虚拟模型来完成。虚拟模型不会自动连接数据库,因此也不会自动检测数据表和字段信息,有两种方式可以定义虚拟模型:

第一种:继承Model类

namespace Home\Model

Class UserModel extends \Think\Model {

Protected $autoCheckFields = false

}

设置autoCheckFields属性为false后,就会关闭字段信息的自动检测,因为ThinkPHP采用的是惰性数据库连接,只要你不进行数据库查询 *** 作,是不会连接数据库的。

第二种:不继承Model类

namespace Home\Model

Class UserModel {

}

这种方式下面自定义模型类就是一个单纯的业务逻辑类,不能再使用模型的CURD *** 作方法,但是可以实例化其他的模型类进行相关 *** 作,也可以在需要的时候直接实例化Db类进行数据库 *** 作。

$db = M('table')//表名

$where = array( //条件数组

'id' =>2,

)

$rs = $db->where($where)->select()//查询, 用find()只能查出一条数据,select()多条

$this->assign('datalist',$rs)//模板赋值

$this->display()//输出到模板

一般情况下是一个表对应一个model类,不用也是可以的。

至于你说的简化代码,给你举个例子:

比如说你有一个user表,里面有 id  name  pass time(登录时间),对其的 *** 作页面有注册,登录,修改密码等等

如果你要使用M来进行实例的话,不管是注册还是干啥,你每次都要对提交过来的信息是否合法进行一个验证,time时间每次都要使用time()函数来重新生成以下

但是如果你使用了model,使用D来实例化,这些信息的验证,和time()的完成都可以写到model中,就不用在上面说的那些页面当中一一进行 *** 作验证或者添加了。

class UserModel extends Model

{

    //使用下面的这些可以很方面对user表进行 *** 作,省去了多次对表进行 *** 作时候所书写的验证和完成之类的代码。

    //自动验证

    protected $_validate = array(

        array('name','require','用户名不能为空'), 

        array('name','','用户名已存在',0,'unique',1),

        array('user_pwd','require','新密码不能是空',0,'',2),//只更新时验证

        )

    //自动完成

    protected $_auto = array (

        array('addtime','time',1,'function'),

    )

    //上面的一些规则可以参考自动完成和自动验证的规则,需要调用函数的时候,在下面自己再添加自定义的函数

 

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9925011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存