You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何拆分记录日期字段并循环展示,且实现倒序排序?

问题描述

我有如下数据表:

namedate1date2
John20202021
Adam20222023
Peter20242025

我希望将每条记录中的每个日期值单独展示,期望得到如下结果:

John  2020
John  2021
Adam  2022
Adam  2023
Peter 2024
Peter 2025

请问如何在Laravel中编写对应的循环实现该需求?

更新需求:我希望将结果按倒序排序,该如何实现?


基础循环实现

假设你的数据是通过Eloquent模型(比如User模型)从数据库查询得到的集合,可按以下方式处理:

控制器代码

// 查询所有记录
$users = \App\Models\User::all();
return view('your-view-path', compact('users'));

Blade视图代码

如果是在页面中展示,直接用嵌套输出逻辑:

@foreach($users as $user)
    {{ $user->name }}  {{ $user->date1 }}<br>
    {{ $user->name }}  {{ $user->date2 }}<br>
@endforeach

如果需要输出纯文本(比如命令行、API响应),可以在控制器里直接拼接结果:

$users = \App\Models\User::all();
$output = '';
foreach ($users as $user) {
    $output .= "{$user->name}  {$user->date1}\n";
    $output .= "{$user->name}  {$user->date2}\n";
}
echo $output;

实现倒序排序

倒序分两种场景,按需选择:

1. 按原始记录的名称倒序输出

直接在查询阶段排序,后续循环逻辑不变:

// 按name字段倒序查询
$users = \App\Models\User::orderBy('name', 'desc')->get();

2. 按日期值倒序输出

如果要把所有日期条目按日期从大到小排列,需要先把数据整理成一维数组再排序:

$users = \App\Models\User::all();
$dateEntries = [];

// 拆解所有日期条目
foreach ($users as $user) {
    $dateEntries[] = ['name' => $user->name, 'date' => $user->date1];
    $dateEntries[] = ['name' => $user->name, 'date' => $user->date2];
}

// 按日期倒序排序
usort($dateEntries, function($a, $b) {
    return $b['date'] <=> $a['date'];
});

// 拼接输出结果
$output = '';
foreach ($dateEntries as $entry) {
    $output .= "{$entry['name']}  {$entry['date']}\n";
}
echo $output;

对应的Blade视图版本:

@php
$dateEntries = [];
foreach($users as $user) {
    $dateEntries[] = ['name' => $user->name, 'date' => $user->date1];
    $dateEntries[] = ['name' => $user->name, 'date' => $user->date2];
}
usort($dateEntries, fn($a, $b) => $b['date'] <=> $a['date']);
@endphp

@foreach($dateEntries as $entry)
    {{ $entry['name'] }}  {{ $entry['date'] }}<br>
@endforeach

内容的提问来源于stack exchange,提问作者ErikTailor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:41:04