关于thinkphp视图详解


        用thinkphp开发的时候经常会用到多表查询、这个时候tp框架对多表查询封装好了方法,如我们可以使用如下的方法。

$Model->table(
'think_blog Blog,
think_category Category,
think_user User')
->field(
'Blog.id,Blog.name,
Blog.title,
Category.title as category_name,
User.name as username')
->order('Blog.id desc')
->where('Blog.category_id=Category.id AND Blog.user_id=User.id')
->select();

       其实这种方法比较繁琐,TP有一个类不知道大家有没有关注过ViewModel.class.php 这个文件,也就是这篇文章所说的视图,这个视图类我们只要继承他然后再子类中定义一个属性、配置好这个属性就可以使用了。如下所示:

      1、定义一个视图模型类

//视图模型 一定需要继承 ViewModel这个类 不然视图不能被

class CpViewModel extends ViewModel {

      //成员属性必须定义 viewFields不能改名。。。。 

      public $viewFields = array( 'Cp'=>array('id','name','title',"status"),    

      'Cp_useer'=>array('cp_id','user_id','title'=>'category_name', '_on'=>'Cp.id=Cp_user.cp_id'), );

}


以上就是配置视图 下面我详细说下这个情况、$viewFields成员属性必须唯一、名称不能改,然后说下这个数组里面的内容Cp Cp_user其实是表名、它是将2张表关联起来,那他们是以什么方式关联的呢?这里有个_on  就可以看明白。那么配置好了之后我们就可以使用它了、如何使用??


如:    $cpview = D("Cpview");

           $data = array("user_id"=>12,"status");

           $order = "id desc";

           $cpview->where($data)->order($order)->select();


其实上面viewFields的配置视图 就相当一个虚拟的表 。。。。。。。。。。。大家可以试试!有什么问题欢迎大家沟通。。。。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值