主页 > 知识库 > ThinkPHP5&5.1框架关联模型分页操作示例

ThinkPHP5&5.1框架关联模型分页操作示例

热门标签:服务器配置 Linux服务器 电子围栏 银行业务 Mysql连接数设置 团购网站 科大讯飞语音识别系统 阿里云

本文实例讲述了ThinkPHP55.1框架关联模型分页操作。分享给大家供大家参考,具体如下:

利用数据库的分页通常比较简单,但在实际项目中,我们往往需要处理复杂的数据,例如多表操作,这时候我们就需要利用模型层的关联操作得到最终想要的数据,而这些数据我们其实也是可以利用ThinkPHP55.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>

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

您可能感兴趣的文章:
  • ThinkPHP5.1+Ajax实现的无刷新分页功能示例
  • thinkphp5框架前后端分离项目实现分页功能的方法分析
  • thinkphp5+layui实现的分页样式示例
  • thinkPHP5框架分页样式类完整示例
  • thinkPHP5框架实现基于ajax的分页功能示例
  • thinkPHP5分页功能实现方法分析
  • ThinkPHP5分页paginate代码实例解析

标签:广元 大理 萍乡 枣庄 衢州 蚌埠 衡水 江苏

巨人网络通讯声明:本文标题《ThinkPHP5&5.1框架关联模型分页操作示例》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266