ThinkPHP5&5.1框架关联模型分页操作示例


Posted in PHP onAugust 03, 2019

本文实例讲述了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;
  }

模板上写法同普通分页:

<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>

ThinkPHP5&amp;5.1框架关联模型分页操作示例

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP个人网站架设连环讲(二)
Oct 09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
PHP中foreach()用法汇总
Jul 02 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 PHP
php中的buffer缓冲区用法分析
May 31 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 #PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 #PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 #PHP
php抽象类和接口知识点整理总结
Aug 02 #PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 #PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 #PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 #PHP
You might like
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
Python找出9个连续的空闲端口
2016/02/01 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
Python socket实现简单聊天室
2018/04/01 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
小学生新学期寄语
2014/01/19 职场文书
食品业务员岗位职责
2014/03/18 职场文书
食品安全工作方案
2014/05/07 职场文书
主题团日活动总结
2014/06/25 职场文书
财务总监岗位职责
2015/02/03 职场文书
2015年个人思想总结
2015/03/09 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
交通安全学习心得体会
2016/01/18 职场文书