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 相关文章推荐
处理单名多值表单的详解
Jun 08 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
Php-Redis安装测试笔记
Mar 05 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
PHP批斗大会之缺失的异常详解
Jul 09 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格式化金额函数分享
2015/02/02 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
js代码实现轮播图
2020/05/04 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
python类的继承实例详解
2017/03/30 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Python中的__init__作用是什么
2020/06/09 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
入党宣誓大会后的感想
2015/08/10 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
浅谈MySQL函数
2021/10/05 MySQL