tp5 分頁後,修改數據

今天做項目遇到分頁後要對數據做統計的情況。直接進入正題吧。
對於paginate()分頁後的數據直接進行修改報如下錯誤

 Indirect modification of overloaded element of think\paginator\driver\Layui has no effect

查手冊,官方表示這樣解決,

$list = Db::name('user')->where('status',1)->paginate()->each(function($item, $key){
$item['nickname'] = 'think';
return $item;
});

然並卵,經過官方手冊之後報錯,render未定義方法

PHP Fatal error:  Call to undefined method think\Collection::render()

結合網友經驗,實際還是有人解決了的,但是重點不夠突出,看了之後可能還是會踩坑。下面結合我的實際代碼分享一下重點:

    	$user = Session::get('user_info');
        // 根據我的id查找我的好友
        $friendList = db('account')->alias('a')
                                   ->join('Member b','b.aid = a.id')
                                   ->where('a.from_id',$user['id'])
                                   ->field('a.id,a.from_id,a.account,b.username')
                                   ->paginate(20);
        $friendListAll = $friendList->all();    //【重點】 將分頁數據轉成實際數據數組,否則不能修改
        foreach ($friendListAll as $k => $v) 
        {
            $info = db('recommend_reward')->where(['aid'=>$user['id'],'from_id'=>$v['id']])->select();
            $v['add'] = 0;      
            for ($j=0; $j < count($info) ; $j++) 
            { 
                $v['add'] += $info[$j]['reward'];    // 累計每個用戶的獎勵
            }
            // 【重點】往 friendList 變量追加 add 字段,$friendList[$k]['add'] =$v;或者$friendList[$k]['add'] =$v['add'];都是錯誤的,會導致Layui has no effect錯誤
            $friendList[$k] =$v;    
        }
        $this->assign("page", $friendList->render());

【重點】註釋的兩大步是關鍵點,希望能幫到Phper們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章