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 相关文章推荐
实时抓取YAHOO股票报价的代码
Oct 09 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
PHP文件读取功能的应用实例
May 08 PHP
帝国cms常用标签汇总
Jul 06 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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框架的性能
2008/01/10 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
yii框架源码分析之创建controller代码
2011/06/28 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python实现折半查找和归并排序算法
2017/04/14 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
python线程里哪种模块比较适合
2020/08/02 Python
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
职务说明书范文
2014/05/07 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
公司委托书格式范文
2014/10/09 职场文书
小学班主任评语
2014/12/29 职场文书
公司岗位说明书
2015/10/08 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android