ThinkPHP5&5.1框架关联模型分页操作示例
时间:2022-07-27
本文章向大家介绍ThinkPHP5&5.1框架关联模型分页操作示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了ThinkPHP5&5.1框架关联模型分页操作。分享给大家供大家参考,具体如下:
利用数据库的分页通常比较简单,但在实际项目中,我们往往需要处理复杂的数据,例如多表操作,这时候我们就需要利用模型层的关联操作得到最终想要的数据,而这些数据我们其实也是可以利用ThinkPHP5&5.1内置的分页引擎进行分页的。
卖的车辆我们称之为车源,车源和车主之间是多对一关系(车主可以有多辆车,一辆车只属于一个车主);车源和车辆图片之间是一对多关系(一辆车有多个图片,一个图片只属于一辆车);车辆还有自定义属性,它们之间是多对多关系,车辆的级别在车源表是个数字,具体名称需要到级别表获取。。。。可以看出,这块是非常复杂的,完全使用数据库操作会非常复杂,所以我们选择使用模型层进行处理。
首先建立模型之间的关系:
public function selfattribute()
{
return $this- belongsToMany("Selfattribute",'cars_selfattribute','selfattribute_id','cars_id');
}
public function carsimg()
{
return $this- hasMany('Carsimg');
}
public function member()
{
return $this- belongsTo('appindexmodelMember');
}
同时对应的模型也要建立对应的方法。
在控制器层写方法:
public function lst()
{
$cars_model = model("Cars");
$cars_list = $cars_model- getCarsList();
$this- assign("cars_list",$cars_list);
// dump($cars_list);
return view();
}
其中getCarsList()方法在模型层中实现:
public function getCarsList()
{
$cars_list = Cars::paginate(2)- each(function($value,$key){
$level_find = db("level")- where('id',$value['level'])- value('name');
$value['level_name'] = $level_find;
$value- carsimg;
$value- member;
$value- selfattribute;
});
return $cars_list;
}
模板上写法同普通分页:
<div class="ibox-content"
<table class="table table-bordered"
<thead
<tr
<th ID</th
<th 名称</th
<th 车主</th
<th 状态</th
<th 操作</th
</tr
</thead
<tbody
{volist name="cars_list" id="vo"}
<tr
<td {$vo.id}</td
<td <a href="{:url('index/cars/carsdetails',array('id'= $vo.id))}" rel="external nofollow" {$vo.full_name}</a </td
<td {$vo.member.member_name}</td
<td
{switch $vo.status}
{case 1}上架{/case}
{case 0}下架{/case}
{case -1}已售{/case}
{default /}未审核
{/switch}
</td
<td
<div class="btn-group open"
<button data-toggle="dropdown" class="btn btn-primary dropdown-toggle" aria-expanded="true" 操作 <span class="caret" </span
</button
<ul class="dropdown-menu"
<li <a href="" 修改</a
</li
<li <a href="" 删除</a
</li
</ul
</div
</td
</tr
{/volist}
</tbody
</table
{$cars_list|raw}
</div
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
- 2017.7.21夏令营清北学堂解题报告
- P3386 【模板】二分图匹配
- √n求单值欧拉函数
- 模板语言
- Django 相关
- 装饰器进阶
- P2894 [USACO08FEB]酒店Hotel
- 深入理解计算机系统读书笔记之第一章:漫游
- 【实战】工控网络协议模糊测试:用peach对modbus协议进行模糊测试
- 【Django错误】OSError: raw write() returned invalid length 14 (should have been between 0 and 7)
- P2234 [HNOI2002]营业额统计
- Python 中格式化字符串 % 和 format 两种方法之间的区别
- [实战]如何在Kali Linux中进行WIFI钓鱼?
- jQuery
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- dotnet 在 Linux 下的 GDI 库对 EMF 图片格式的支持
- 跟牛老师一起学WEBGIS——WEBGIS基础(WMS服务)
- 【STM32H7】第6章 RL-TCPnet V7.X底层驱动说明
- 【STM32F429】第6章 RL-TCPnet V7.X底层驱动说明
- 【STM32F407】第6章 RL-TCPnet V7.X底层驱动说明
- LINUX一些面试问题集合
- 【redis6.0.6】redis源码慢慢学,慢慢看 -- 第二天:空间配置(zmalloc)
- URI格式
- 讲通C/C++预编译/条件编译指令 #ifdef,#ifndef,#endif,#define,…
- FreeRTOS静态和动态创建任务
- Jenkins部署Springboot项目
- atoi函数
- 网络字节
- redis学习(五)
- 编译报错原因