thinkphp5.0实例详解(ThinkPHP5&5.1框架关联模型分页操作示例)
类别:编程学习 浏览量:719
时间:2022-01-15 01:26:17 thinkphp5.0实例详解
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( '\app\index\model\Member' ); } |
同时对应的模型也要建立对应的方法。
在控制器层写方法:
|
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 ; } |
模板上写法同普通分页:
|
< li 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 > < li 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 > </ li > </ td > </ tr > {/volist} </ tbody > </ table > {$cars_list|raw} </ li > |
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/pan_yuyuan/article/details/81948020
您可能感兴趣
- thinkphp5框架分析(thinkPHP5框架路由常用知识点汇总)
- thinkphp5表单系统(thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例)
- thinkphp返回json(thinkphp5框架实现数据库读取的数据转换成json格式示例)
- thinkphp5设计权限(Thinkphp5.0 框架视图view的比较标签用法分析)
- thinkphp接口开发实例(ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解)
- thinkphp5.1 执行流程(Thinkphp5.0 框架的请求方式与响应方式分析)
- thinkphp5开发教程(thinkPHP5框架接口写法简单示例)
- thinkphp5.0实例详解(ThinkPHP5&5.1框架关联模型分页操作示例)
- thinkphp5.1插件实现(Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例)
- thinkphp5数据库配置(Thinkphp5框架实现获取数据库数据到视图的方法)
- vuephp后台开发框架(Vue+thinkphp5.1+axios实现文件上传)
- thinkphp5框架怎么设置(thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例)
- thinkphp5对接支付宝扫码支付(ThinkPHP框架下整合支付宝支付功能图文教程)
- thinkphp从模板自定义标签(Thinkphp5.0框架视图view的循环标签用法示例)
- thinkphp5分页数据怎么处理(TP5thinkPHP5框架实现显示错误信息及行号功能的方法)
- thinkphp5开发小程序后台(PHP小程序支付功能完整版基于thinkPHP)
- 岳云鹏跟凤凰传奇谈心,说出了人生中最重要的三个人,这才成功(岳云鹏跟凤凰传奇谈心)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
- 超撩人治愈的绝美水彩,原来出自她之手 一笔一画令无数人沉醉(超撩人治愈的绝美水彩)
- 新手的勾线(新手的勾线)
热门推荐
- dedecms修改发布时间(织梦DEDECMS中的时间格式代码汇总)
- virtual和abstract的区别
- 单元格内容过多超出怎么办(单元格内文本显示超过单元格宽度的快速解决办法)
- python出现modify怎么办(解决Python找不到ssl模块问题 No module named _ssl的方法)
- python创建文件夹(python批量创建指定名称的文件夹)
- linux双网卡热备配置超详细(linux 使用bond实现双网卡绑定单个IP的示例代码)
- 在电脑上面如何使用wampserver(wampserver软件在本地建立多个站点方法教程)
- 用css3实现阴影(CSS3中文字镂空、透明值、阴影效果设置示例小结)
- php运行环境的搭建方法(php集成开发环境详解)
- navicat连接mysql1045解决方法(Navicat 连接服务器端中的docker数据库的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9