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 相关文章推荐
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 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 xml常用函数的集合(比较详细)
2013/06/06 PHP
php动态生成函数示例
2014/03/21 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
js调用flash的效果代码
2008/04/26 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
python实现简单socket通信的方法
2016/04/19 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Python 串口读写的实现方法
2019/06/12 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
怎样写演讲稿
2014/01/04 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL