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);
}
# ------------------------------------------------------------------------------------ #
祝大家工作顺利,身体健康!