制作分页显示时用paginate()函数获取对象后如何将获取到的某一键值进行修改

在设计搜索功能时往往会使用到paginate()函数,这个函数返回的是对象,不能使用一般的数组操作来对其中的键值进行修改,如,


设计的功能是从数据库查找符合条件的数据项进行分页显示,其中数据库中保存数据项的更新时间使用的date('Y-m-d H:i:s'),所以,不进行时间格式化的话显示的就是下面这样:


部分代码如下:

  if ($check_num < 2) {
            $schedule_info_page = Db::name('schedule_info')->where('school_name', $post_data['text'])->paginate(2);
            $schedule_info = Db::name('schedule_info')->where('school_name', $post_data['text'])->select();
            if ($schedule_info == null) {
                $schedule_info_page = Db::name('schedule_info')->where('class_name', $post_data['text'])->paginate(2);

            } else {

            }
        } elseif ($check_num == 2) {
            $map = [
                'school_name' => $text_info[0],
                'class_name' => $text_info[1]
            ];
            $schedule_info_page = Db::name('schedule_info')->where($map)->paginate();

        } elseif ($check_num > 2) {
            $this->error('查询格式有误:学校-班级');
        }

        $page = $schedule_info_page->render();
        $this->assign('text', $schedule_info_page);
        $this->assign('page', $page);
//        session::delete('dataTemp');
        return $this->fetch('search');

这并不是想要的结果,最后更新时间需要显示为多久前,于是需要对查询到的数据进行操作,这时不能像操作数组一样直接使用下标来进行赋值操作,尝试过很多方法最后确认使用each()方法可以对其进行相应键值的修改或者追加参考自

开发手册:

分页后数据处理 ( V5.0.9 )
V5.0.9 版本开始 支持分页类后数据直接 each 遍历处理,方便修改分页后的数据,而不
分页
- 508 - 本文档使用 看云 构建
是只能通过模型的获取器来补充字段。
$list = User::where('status',1)->paginate()->each(function($item, $key){
$item->nickname = 'think';
});
如果是Db类操作分页数据的话,each方法的闭包函数中需要使用返回值,例如:
$list = Db::name('user')->where('status',1)->paginate()->each(function($i
tem, $key){
$item['nickname'] = 'think';
return $item;
});

只需要在原来的基础上添加以下语句即可实现需要的功能:

$list = $schedule_info_page->each(function ($item, $key) {
            $item['updated_at'] = Convert::time_ago($item['updated_at']);
            return $item;
        });
        $page = $list->render();
        $this->assign('list', $list);
        $this->assign('page', $page);
//        session::delete('dataTemp');
        return $this->fetch('search');

最后输出结果如下:


综上,很多问题都能从开发手册上直接找到解决方法,熟悉开发手册上的内容区域可以更好的学习

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值