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 10 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
python进程与线程小结实例分析
Nov 11 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
Laravel 验证码认证学习记录小结
Dec 20 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 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
第四章 php数学运算
2011/12/30 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
vue axios整合使用全攻略
2018/05/24 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
在python3中实现更新界面
2020/02/21 Python
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
体育教育专业自荐信范文
2013/12/20 职场文书
领导接待方案
2014/03/13 职场文书
开业典礼主持词
2014/03/21 职场文书
见习报告怎么写
2014/10/31 职场文书
运动会闭幕词
2015/01/28 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
Java tomcat手动配置servlet详解
2021/11/27 Java/Android
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang