ThinkPHP中视图模型详解.

  很多TP的新手对于模型中的视图模型不甚了解,官方虽然有详细手册,但是对于初学者来说还是比较难以理解!

  先简单说一下视图模型所能实现的功能,基本就是主表与副表之间各个字段的关联问题,实现多表关联查询,相对于使用原生SQL语句来说,着实是简单不少.

  首先在数据表初始化的时候,用的不是传统的M(‘User‘),在视图模型中使用的是D(‘UserView‘),如下图:

  

  需要主要的是几个单词的首字母大写.

  之后在Lib/Model目录中新建名为XXXViewModel.class.php(XXX为任意控制器名/首字母大写).里面的内容格式如下图:

  

  推荐所有的数组后面都加上‘_type‘=>‘LEFT‘.因为当所关联的表的数据为空时,系统会报错.

  首先主表就是customer数组中填写的则是需要查询出来的字段,其中里面的p_id和b_id则是他所关联的表设置的别名,其实类似于原生SQL里面的LeftJoin语句的感觉.

  

  上图所示,‘_table‘写的是你需要关联的表名,值得注意的是表名需要写全称,包括它的前缀.

  ‘_as‘则是你要给他取的别名,‘name‘则是你之后在进行CURD操作的时候所用的字段,

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

  当然这个一般用来处理过于繁杂的表数据关联,比如说一个主表关联十几个副表,这个时候用到视图模型你就会觉得省心了.

  这只是一个基本功能的简单例子,基本就讲解到这里.希望可以帮助到一些TP的新手.

ThinkPHP中视图模型详解.,布布扣,bubuko.com

时间: 2025-01-02 14:51:16

ThinkPHP中视图模型详解.的相关文章

ThinkPHP中Session用法详解

在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有: Session::set(name, value):注册 session . Session::is_set(name):检查Session的值是否设置. Session::get(name):读取 session . Session::clear():清空Session. Session::destroy():销毁 session . ThinkPHP 默认开启了 session 会话,因此在使用 Session 类之

ThinkPHP视图查询详解

ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm 这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下 ThinkPHP提供的视图查询应用功能十分强大,用户利用视图查询功能可以将多个数据表的字段内容按需要进行指定和筛选,组织成一个基于这些数据表的视图模型,然后就可以通过该模型直接进行多表联合查询,非常方便和简单. 例如在项目中,我们定义有三个表: user          用户基础表,user_info   用户详细信息表

ThinkPHP CURD方法中field方法详解

导读:ThinkPHP CURD方法的field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段,可以用于查询和写入操作. 1.用于查询在查询操作中field方法是使用最频繁的.$Model->field('id,title,content')->select(); 这里使用field方法指定了查询的结果集中包含id,title,content三个字段的值.执行的SQL相当于:SELECT id,title,content FROM table 当然,除了select方法之外

SpringMVC视图机制详解[附带源码分析]

目录 前言 重要接口和类介绍 源码分析 编码自定义的ViewResolver 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html 本文将分析SpringMVC的视图这部分内容,让读者了解SpringMVC视图的设计原理. 重要接口和类介绍 1. View接口 视图基础接口,它的各种实现类是无

ThinkPHP内置函数详解D、F、S、C、L、A、I

ThinkPHP内置函数详解D.F.S.C.L.A.I 单字母函数D.F.S.C.L.A.I 他们都在ThinkPHP核心的ThinkPHP/Mode/Api/functions.php这个文件中定义. 下面我分别说明一下他们的功能: D() 加载Model类 M() 加载Model类 A() 加载Action类 L() 获取语言定义 C() 获取配置值    用法就是   C("这里填写在配置文件里数组的下标") S() 全局缓存配置 用法S(“这里相当于一个唯一的标识”) F()

Spring4.0MVC学习资料,Controller中的方法详解和使用(四)

在以前,mvc的框架,基本上就是struts框架了.但是现在不一样了.springmvc出来了.spring的mvc框架不亚于struts了,springmvc出来了,我们有了更多的选择. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 We

OSI七层模型详解 TCP/IP协议

总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转换,数据加密 没有协议 会话层 解除或建立与别的接点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP 网络层 为数据包选择路由 IP,ICMP,OSPF,EIGRP,IGMP 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU 物理层 以二进制数据形式在物理媒体上

iOS开发——代码生成TabBar与视图切换详解

我在之前多篇博客中讲解了在不使用storyboard而使用nib文件的情况下,使用代码生成导航栏并进行跳转,具体可以参考<iOS开发--界面跳转与返回及视图类型详解><iOS纯代码实现界面建立.跳转.导航栏(无storyboard.无nib)(Objective-C)>.今天我来讲解下在使用nib搭建界面的情况下,用代码生成TabBar,并进行界面之间的跳转.代码示例已经上传至:https://github.com/chenyufeng1991/TabBarTest   . (1)

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba