ThinkPHP 数据库视图模型
发布:smiling 来源: PHP粉丝网 添加日期:2014-04-21 14:52:51 浏览: 评论:0
注意:本文中的视图,是指数据库视图模型,而非 ThinkPHP 中的 View 视图类实现.
数据库视图是指从一个或几个基本表中根据用户需要,提取出需要的数据列而做成一个虚表,这样就不必根据 a 表数据再去查询 b 表,c 表... 等有关系的表而方便的一次性将数据查询出来.
视图在有些数据库下面并不被支持,ThinkPHP 模拟实现了数据库的视图,该功能可以用于多表联合查询.
要在 ThinkPHP 中使用视图模型,只需要继承 ViewModel,然后设置 viewFields 属性,使用 D方法实例化模型 即可.
视图模型实例
现有 user 表和 article 表如下(表前缀为 test_):
- uid username password email regdate
- 1 admin b7e591c246d010bb2ccd77d52490c85e admin@5idev.com 1277992339
- 2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917
- 3 Jack 0193686a35e4de85ee3f2ff0567adf49 jack@gmail.com 1278061380
- aid title content add_time cid uid
- 1 文章1 文章1正文内容…… 1277993339 1 1
- 2 文章2 文章2正文内容…… 1277994339 2 3
创建视图模型文件:
- <?php
- class ArticleViewModel extends ViewModel{
- public $viewFields = array(
- 'article'=>array('aid','title','content','uid'),
- 'user'=>array('username','_on'=>'article.uid=user.uid'),
- );
- }
- ?>
在该视图模型文件中,模型类继承 ViewModel 视图模型,并定义 $viewFields 属性,每个元素包括了数据表及对应要查询的字段,在每个表元素中,通过定义 _on 元素来定义关联查询条件.
将该文件保存为 Lib/Model/ArticleViewModel.class.php.
在 Action 操作中使用视图模型
在模块操作中,使用 D 方法来实例化视图模型:
- <?php
- class ArticleAction extends Action{
- public function index(){
- header("Content-Type:text/html; charset=utf-8");
- $Dao = D('ArticleView'); // 实例化视图
- $article_list = $Dao->select();
- print_r($article_list);
- echo '<br /><br />';
- // 打印出执行的 SQL 语句
- echo '执行的 SQL 语句为:'.$Dao->getLastSql();
- }
- }?>
访问该方法,打印出结果如下:
- Array(
- [0] => Array(
- [aid] => 1,
- [title] => 文章1,
- [content] => 文章1具体内容……,
- [username] => admin,
- )
- [1] => Array(
- [aid] => 2,
- [title] => 文章2,
- [content] => 文章2具体内容……,
- [username] => Jack,
- )
- )
执行的 SQL 语句为:
SELECT article.aid AS aid,article.title AS title,article.content AS content,article.uid AS uid,user.username AS username FROM test_article article JOIN test_user user ON article.uid=user.uid
Tags: 视图 模型 数据库
- 上一篇:ThinkPHP 多语言配置
- 下一篇:thinkphp邮件发送
相关文章
- ·ThinkPHP视图查询详解(2021-03-04)
- ·ThinkPHP 非标准名称数据表快速创建模型方法(2014-04-11)
- ·ThinkPHP之实例化模型(2014-04-12)
- ·ThinkPHP实例化模型(2014-04-12)
- ·ThinkPHP模型--字段、数据主键(2014-04-19)
- ·ThinkPHP实例化模型的四种方法(2014-04-19)
- ·不用封装 SQL, HTML 等领域语言了吧?(2014-10-24)
- ·ThinkPHP 输出和模型使用(2014-11-20)
- ·ThinkPHP中的关联模型注意点(2021-02-20)
- ·ThinkPHP实例化模型的四种方法概述(2021-04-08)
- ·ThinkPHP实现非标准名称数据表快速创建模型的方法(2021-05-01)
- ·浅谈thinkphp的实例化模型(2021-05-05)
- ·ThinkPHP模型详解(2021-06-14)
- ·thinkPHP模型初始化实例分析(2021-06-28)
- ·ThinkPHP5&5.1框架关联模型分页操作示例(2021-12-09)
- ·thinkphp5 模型实例化获得数据对象的教程(2022-01-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)