当前位置:编程学习 > php >>

thinkphp 分页函数paginate中的each()传递外部参数

thinkphp分页后数据处理
支持分页类后数据直接each遍历处理,方便修改分页后的数据,而不是只能通过模型的获取器来补充字段。

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

传递参数,以及改变参数:
$t1="yizuotu";
$t2="net";
$list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate()->each(function($item, $key) use($t1,&$t2)){
    $item['nickname'] = 'think';
    $item['t1'】=$t1
    if ($t2=='net) $t2='yizuotu';
    $item['21'】=$t2
    return $item;
});

echo $t2;//返回 yizuotu


在使用each()时,each()里面只能使用局部变量,当使用外部变量时会报未定义变量的错误,但是有时候我们还必须使用外部变量,就需要想是时作用域的问题,但是如果使用 global 全局虽然不报错,但是打印出来是 null ,

所以最终使用 use 解决, 如果在函数中需要修改变量的值,会发现在函数内,变量的值改变了,但是函数外面的变量值还是没变,如果想使函数内外的变量的值同时改变,在 use 前面加 “& ”即可。

复制代码
$list = Db::view('drugall')
            ->join('drug_class','id drugclass_id','drugall.drugclass_id = drug_class.id')
            ->where($map)
            ->paginate(15,false,['query'=>request()->param()])
            ->each(function ($item,$key) use(&$userId)
            {
                $item['time'] = Db::view('drug','createtime')
                    ->view('draft_user','draftkind','drug.id = draft_user.draftId')
                    ->where(['drug.drugid'=>$item['id'],'draft_user.userid'=>$userId])
                    ->select();
                return $item;
            });
        return $list;

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,