Thinkphp3.2.3的学习Day5

一:ThinkPHP中的功能类-数据分页类

数据分页它是通过limit语法来实现。分页类的核心就是limit语法。
在ThinkPHP中系统封装好了一个分页类:Page.class.php

1、介绍

属性:
在这里插入图片描述

方法:
构造方法:
有三个参数,但是至少得传递第一个参数(总的记录数),一般还要指定第二个参数(每页显示的记录数,如果不指定则默认显示20个)

在这里插入图片描述
SetConfig方法:通过public类型的setConfig方法来设置私有属性config
在这里插入图片描述
Show方法:生成页码及页面页码上的URL连接
在这里插入图片描述
制作分页效果的步骤(七个步骤):
在这里插入图片描述
第一步:查询出总的记录数;
第二步:实例化分页类,由于底层实现要求实例化的时候至少需要传递总数,所以需要在实例化的时候传递参数;
第三步:(可选步骤)定制显示分页提示的文字;
第四步:通过show方法输出分页页码的连接;
第五步:使用limit方法进行分页查询,注意其参数是page类的属性;
第六步:使用assign将查询的数据和分页连接数据传递给模版;
第七步:输出模版;

2、使用数据分页类实现职员管理的分页功能
第一步:查询总的记录数
在这里插入图片描述
第二步:实例化分页类,传递参数
在这里插入图片描述
第三步:(可选步骤)定制分页按钮的提示文字
设置首页和末页的时候需要注意,如果总的页码数小于分页类中rollPage属性,则不会显示首页和末页的按钮,这个时候需要修改rollPage的值;由于分页类中lastSuffix属性,定义最后一页显示总页数,所以将其改为false:

在这里插入图片描述
第四步:通过show方法输出分页的URL链接
在这里插入图片描述
Show方法返回值类似于下面的这种形式:
在这里插入图片描述
第五步:使用limit方法查询数据
在这里插入图片描述
第六步:传递数据
在这里插入图片描述
第七步:展示模版
在这里插入图片描述
在模版中展示show变量:
在这里插入图片描述
效果:
在这里插入图片描述

二:联表查询(重点)

在原生的sql中使用join语法来进行数据表的联表查询。
在ThinkPHP中,系统也是支持联表查询操作,但是可以归纳成两种方式:table方法、join方法。

1、table方法

原生的语法中table方法的语法:select 表1.字段,表2.字段 from 表1 as 别名1,表名2 as 别名2 where 表1.字段 = 表2.字段;

Where的语句含义:也就是通过where语法来进行两个表的关联操作。

案例:查询每个职员的全部信息,要求使用table语法。

分析:因为职员信息中,有一个字段“dept_id”,这个字段是部门表中的主键,所以此处应该读取出部门的名称。所以要求关联部门表。关联的条件是职员表中的dept_id等于部门表中的id。

主表:sp_user 别名:t1
从表:sp_dept 别名:t2
原生的sql语句:select t1.*,t2.name as deptname from sp_user as t1,sp_dept as t2 where t1.dept_id = t2.id;
在navicat中执行的结果:
在这里插入图片描述
将上述的代码,在ThinkPHP中实现查询的效果:
方法1:可以使用执行原生的sql语句进行执行
在这里插入图片描述
方法2:可以使用table方法实现
在ThinkPHP中一般不建议频繁的使用执行原生的sql语句方法执行sql,所以上述的方法还可以写成另外的一种形式:
$model -> table(‘表名1 [as 别名1],表名2 [as 别名2]…’);
//table方法也是连贯操作中的一个辅助方法。在使用table方法之后模型会自动关联上table方法中指定的数据表。

下面可以使用table方法改写之前的原生的sql:
在这里插入图片描述

在这里插入图片描述
2.、join方法

在这里插入图片描述

在join语法中,上述圈出的用的比较多。
在原生的sql中,join的语法:select 表1.字段,表2.字段 from 表1 as 别名 [inner/left/right/full] join 表2 as 别名 on 表1.字段 = 表2.字段;

案例:查询部门的详细信息,列出每一条部门信息中的pid对应的部门名称。

说明:在以后的实际使用的时候,会遇到一种关联情况就是自己关联自己,自联查询。
主表:sp_dept 别名:t1
从表:sp_dept 别名:t2
条件:t1.pid = t2.id
原生的sql:select t1.*,t2.name as deptname from sp_dept as t1 left join sp_dept as t2 on t1.pid = t2.id;
将上述的sql放到navicat中执行:
在这里插入图片描述
在ThinkPHP中去执行上述的代码:
Join联表语法:
$model -> join(‘联表方式 join 表名 [as 别名] on 表1.字段 = 表2.字段’); //join方法也是连贯操作的辅助方法之一,只有一个参数。

如果需要给当前模型关联的表起别名的话,则可以使用alias方法:
$model -> alias(‘别名’); //alias也是辅助方法之一

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值