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 09 PHP
可以在线执行PHP代码包装修正版
Mar 15 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
php获取是星期几的的一些常用姿势
Dec 15 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
php封装一个异常的处理类
2017/06/08 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Python中的CURL PycURL使用例子
2014/06/01 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python调用java的jar包方法
2018/12/15 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
工程班组长岗位职责
2013/12/30 职场文书
八年级美术教学反思
2014/02/02 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
拾金不昧感谢信
2015/01/21 职场文书
护理工作个人总结
2015/03/03 职场文书
建国大业观后感800字
2015/06/01 职场文书