联系方式
企业电话: 021-64391578
商务联系: 18717819904 林经理
迅速网络微信
微信平台
迅速网络微信

关注迅速公众平台

迅速网络微信
联系微信
迅速网络微信

关注微信联系人

迅速网络微信
邮件咨询
邮件咨询: 1368069293@qq.com
智能AI

在线智能AI

tp5 使用paginate分页获取数据对象之后 如何对对象进行数据添加

上海迅速网络


php
 
 

use think\Db;
use think\Paginator;

/**
 * 商品列表查询(带分页)
 * 
 * @param int $pageNumber 页码
 * @param int $pageSize 每页数量
 * @return \think\Paginator
 */
function getProductList($pageNumber = 1, $pageSize = 10)
{
    // 使用 paginate 进行分页查询
    $products = Db::name('product')
        ->alias('p')
        ->field('itemid, name, m_price, price, logo, sale_num, sort, is_sale, is_floor, addtime, update_time')
        ->where(function ($query) {
            $query->whereOr('is_sale', '=', 0)
                  ->whereOr('is_floor', '=', 0);
        })
        ->order('sort', 'DESC')
        ->paginate($pageSize, false, ['page' => $pageNumber]);

    // 获取分页数据集(集合)
    $data = $products->items();

    // 对每条数据进行扩展处理(例如添加自定义字段)
    $processedData = array_map(function ($item) {
        $item['logo_url'] = !empty($item['logo']) ? 'https://yourdomain.com/uploads/' . $item['logo'] : '';
        $item['addtime_format'] = date('Y-m-d H:i', $item['addtime']);
        $item['status_text'] = $item['is_sale'] ? '在售' : '停售';
        
        // 示例:添加自定义标记
        if (!$item['is_sale'] || !$item['is_floor']) {
            $item['warning'] = '该商品存在下架或未推荐状态';
        }

        return $item;
    }, $data);

    // 将处理后的数据重新设置回分页对象
    $products->setCollection(collect($processedData));

    return $products;
}

// 调用示例
$pageNumber = input('get.page', 1, 'intval');
$pageSize   = 10;

$products = getProductList($pageNumber, $pageSize);

// 输出结果(适用于 API 或模板渲染)
$result = [
    'data'        => $products->items(),           // 当前页数据
    'total'       => $products->total(),           // 总记录数
    'last_page'   => $products->lastPage(),        // 最后一页
    'current_page'=> $products->currentPage(),     // 当前页
    'per_page'    => $products->listRows(),        // 每页数量
];

// 返回 JSON(API 场景)
return json($result);

// 或者在模板中使用 $products->render() 输出分页 HTML
?>

以上代码首先通过 Db::name() 方法创建一个名为 'product' 的 SQL 查询,然后使用 where() 方法添加过滤条件。接着,使用 orderBy() 方法对结果进行排序,并通过 limit() 方法限制返回的结果数量。最后,遍历处理后的数据并插入到新创建的数据表中。


相关推荐
弹性盒布局模型及其应用
第十一届“大广赛”启动,信息技术有限公司提供技术支持
php去掉字符串的最后一个字符附substr()的用法
jquery实现图片上传之前预览的方法
JSSDK实现微信分享功能

特别申明:本站的主旨在于收集互联网运营相关的干货知识,给运营小伙伴提供便利。 网站所收集到的公开内容均来自于互联网或用户投稿,并不代表本站认同其观点, 也不对网站内容的真实性负责,如有侵权,请联系站长删除

业务联系

迅速服务号
扫码添加微信好友
我们来联系您