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 中英文语言转换类
Sep 07 PHP
基于php下载文件的详解
Jun 02 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
php修改文件上传限制方法汇总
Apr 07 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
PHP自定义多进制的方法
Nov 03 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
Jan 22 PHP
PHP的PDO预定义常量讲解
Jan 24 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
PHP array 的加法操作代码
2010/07/24 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
Python的迭代器和生成器
2015/07/29 Python
python连接mysql实例分享
2016/10/09 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
企业管理部经理岗位职责
2013/12/24 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
python基础之类属性和实例属性
2021/10/24 Python
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python