本文实例讲述了ThinkPHP5&5.1框架关联模型分页操作。分享给大家供大家参考,具体如下:
利用数据库的分页通常比较简单,但在实际项目中,我们往往需要处理复杂的数据,例如多表操作,这时候我们就需要利用模型层的关联操作得到最终想要的数据,而这些数据我们其实也是可以利用ThinkPHP5&5.1内置的分页引擎进行分页的。
卖的车辆我们称之为车源,车源和车主之间是多对一关系(车主可以有多辆车,一辆车只属于一个车主);车源和车辆图片之间是一对多关系(一辆车有多个图片,一个图片只属于一辆车);车辆还有自定义属性,它们之间是多对多关系,车辆的级别在车源表是个数字,具体名称需要到级别表获取。。。。可以看出,这块是非常复杂的,完全使用数据库操作会非常复杂,所以我们选择使用模型层进行处理。
首先建立模型之间的关系:
1
2
3
4
5
6
7
8
9
10
11
12
|
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' );
}
|
同时对应的模型也要建立对应的方法。
在控制器层写方法:
1
2
3
4
5
6
7
8
|
public function lst()
{
$cars_model = model( "Cars" );
$cars_list = $cars_model ->getCarsList();
$this ->assign( "cars_list" , $cars_list );
// dump($cars_list);
return view();
}
|
其中getCarsList()方法在模型层中实现:
1
2
3
4
5
6
7
8
9
10
11
|
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 ;
}
|
模板上写法同普通分页:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
< 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框架的PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/pan_yuyuan/article/details/81948020