ThinkPHP5&5.1框架關(guān)聯(lián)模型分頁(yè)操作示例
本文實(shí)例講述了ThinkPHP5&5.1框架關(guān)聯(lián)模型分頁(yè)操作。分享給大家供大家參考,具體如下:
利用數(shù)據(jù)庫(kù)的分頁(yè)通常比較簡(jiǎn)單,但在實(shí)際項(xiàng)目中,我們往往需要處理復(fù)雜的數(shù)據(jù),例如多表操作,這時(shí)候我們就需要利用模型層的關(guān)聯(lián)操作得到最終想要的數(shù)據(jù),而這些數(shù)據(jù)我們其實(shí)也是可以利用ThinkPHP5&5.1內(nèi)置的分頁(yè)引擎進(jìn)行分頁(yè)的。
賣的車輛我們稱之為車源,車源和車主之間是多對(duì)一關(guān)系(車主可以有多輛車,一輛車只屬于一個(gè)車主);車源和車輛圖片之間是一對(duì)多關(guān)系(一輛車有多個(gè)圖片,一個(gè)圖片只屬于一輛車);車輛還有自定義屬性,它們之間是多對(duì)多關(guān)系,車輛的級(jí)別在車源表是個(gè)數(shù)字,具體名稱需要到級(jí)別表獲取。。。??梢钥闯觯@塊是非常復(fù)雜的,完全使用數(shù)據(jù)庫(kù)操作會(huì)非常復(fù)雜,所以我們選擇使用模型層進(jìn)行處理。
首先建立模型之間的關(guān)系:
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'); }
同時(shí)對(duì)應(yīng)的模型也要建立對(duì)應(yīng)的方法。
在控制器層寫方法:
public function lst() { $cars_model = model("Cars"); $cars_list = $cars_model->getCarsList(); $this->assign("cars_list",$cars_list); // dump($cars_list); return view(); }
其中g(shù)etCarsList()方法在模型層中實(shí)現(xiàn):
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; }
模板上寫法同普通分頁(yè):
<div class="ibox-content"> <table class="table table-bordered"> <thead> <tr> <th>ID</th> <th>名稱</th> <th>車主</th> <th>狀態(tài)</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>
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP基于yii框架實(shí)現(xiàn)生成ICO圖標(biāo)
本文給大家分享了2則php生成ICO圖標(biāo)的代碼,第一款是基于YII框架實(shí)現(xiàn)的,第二款是純php編寫,都非常的不錯(cuò),有需要的小伙伴可以參考下2015-11-11解決php 處理 form 表單提交多個(gè) name 屬性值相同的 input 標(biāo)簽問(wèn)題
這篇文章主要介紹了php 處理 form 表單提交多個(gè) name 屬性值相同的 input 標(biāo)簽問(wèn)題的解決方法,需要的朋友參考下吧2017-05-05如何使用php實(shí)現(xiàn)評(píng)委評(píng)分器
本文主要介紹了如何使用php實(shí)現(xiàn)評(píng)委評(píng)分器,從輸入的數(shù)組中去掉最高分和最低分,算出平均分,需要的朋友可以參考下2015-07-07php使用goto實(shí)現(xiàn)自動(dòng)重啟swoole、reactphp、workerman服務(wù)的代碼
這篇文章主要介紹了php使用goto實(shí)現(xiàn)自動(dòng)重啟swoole、reactphp、workerman服務(wù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04laravel在中間件內(nèi)生成參數(shù)并且傳遞到控制器中的2種姿勢(shì)
今天小編就為大家分享一篇laravel在中間件內(nèi)生成參數(shù)并且傳遞到控制器中的2種姿勢(shì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10php實(shí)現(xiàn)base64圖片上傳方式實(shí)例代碼
本篇文章主要介紹了php實(shí)現(xiàn)base64圖片上傳方式實(shí)例代碼,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,有需要的小伙伴可以參考下。2017-02-02php檢查函數(shù)必傳參數(shù)是否存在的實(shí)例詳解
這篇文章主要介紹了php檢查函數(shù)必傳參數(shù)是否存在的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-08-08