thinkphp视图模型详解

来源:互联网 发布:vb怎么下载 编辑:程序博客网 时间:2024/05/16 11:01

视图模型更加类似一张表虚拟的表,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选,这是ThinkPHP手册上的说法。其实说白了,视图模型就是mysql多表查询而已,视图模型不支持多表更新,删除。

创建视图模型文件 将该文件保存为 Lib/Model/ArticleViewModel.class.php

<?phpclass ArticleViewModel extends ViewModel{    public $viewFields = array(        'article'=>array('id','title','rem','pic','_type'=>'LEFT'),        'cate'=>array('name','_on'=>'article.cateid=cate.id'),    );}?>

需要注意的是:

1.'_type'=>'LEFT',这里的_type定义对下一个表有效,因此要注意视图模型的定义顺序。

2.'_on'执行关联操作:主表.所关联的ID=副表(使用的是别名).主键ID,当他们相等的时候,也就实现了主表某个字段与副表的某条数据进行关联了,最后惊醒Select操作就是把关联的内容展现出来了.

在对应的操作中使用视图模型

<?phpnamespace Admin\Controller;use Think\Controller;class ArticleController extends Controller {    public function lst(){        **$article = D('ArticleView'); // 实例化article对象**        $count = $article->count();// 查询满足要求的总记录数        $Page  = new \Think\Page($count,2);// 实例化分页类 传入总记录数和每页显示的记录数(2)        $show  = $Page->show();// 分页显示输出        // 进行分页数据查询 注意limit方法的参数要使用Page类的属性        $list = $article->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select();        $this->assign('list',$list);// 赋值数据集        $this->assign('page',$show);// 赋值分页输出        $this->display();    }}
原创粉丝点击