PHP 合并两个或多个数据模型为同一集合,并按某字段排序

PHP 合并两个或多个数据模型为同一集合,并按某字段排序

首先这种需求在实际应用中还是存在的

有两个不同的数据表查询到两个不同的数据模型,返回的数据集合要包含这两个模型

下面看做法:

# ------------------------------------------------------------------------------------ #

public function Featured(Request $request, News $newsModel, Active $activeModel)
{
    $userId = $request->user('api')->id;

    $news = $newsModel->query()
        ->limit($request->query('limit', 15))
        ->get()->toArray();

    $actives = $activeModel->query()
        ->limit($request->query('limit', 15))
        ->get()->toArray();

    // 合并数据
    $data['news'] = $news;
    $data['actives'] = $actives;
    $square = array_merge_recursive($data['news'],$data['actives']); # 把两个不同的数据模型合并成一个数组集合

    // 把合并后的数据按时间排序
    $order = array_column($square,'updated_at'); # 取出排序需要的字段,注:这个字段是两个数据模型里都要有的共同字段
    array_multisort($order, SORT_DESC, $square); # 按照取出的字段进行排序,下图有array_multisort()函数用法

    return response()->json($square, 200);
}

# ------------------------------------------------------------------------------------ #

 

祝大家工作顺利,身体健康!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值