ThinkPHP5&5.1框架关联模型分页操作示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-09 14:34:11 浏览: 评论:0
本文实例讲述了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>
Tags: ThinkPHP5关联模型
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)