暂无 |

视图模型实例

现有 user 表和 article 表如下(表前缀为 test_):

user 用户表:
uid username password email regdate
1 admin b7e591c246d010bb2ccd77d52490c85e admin@520mg.com 1277992339
2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917
3 Jack 0193686a35e4de85ee3f2ff0567adf49 jack@gmail.com 1278061380
article 文章表:
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

从上面的结果可以看出,视图模型是利用了 JOIN查询 模拟了数据库视图的实现,将多张表的数据汇聚到一起。

java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论