【发布时间】:2025-12-30 06:25:16
【问题描述】:
我正在尝试在将数据导出到 Excel 之前对其进行排序。这是我一直在使用的代码:
public function getDashboardReport2(){
(...)
echo "<tr><td>Group Name</td><td>Unit</td><td>Unit Number</td><td>First Name</td><td>Last Name</td><td>Phone Number</td></tr>";
($group = \App\Group::find($auth_event->group_id);
$bookings = \App\EventBookings::where("group_id", "=", $auth_event->group_id)->get();
if($bookings->count() > 0){
foreach ($bookings as $booking){
$egroup = \App\EventGroup::find($booking->eg_id); // Here I tried orderBy('name');
$chalet = \App\Chalet::find($booking->chalet_id);
if($egroup) {
$egroup_members = \App\EventGroupMembers::where("eg_id", "=", $egroup->eg_id)->get();
$row = 0;
if ($egroup_members->count() > 0) {
foreach ($egroup_members as $egroup_member) {
$row++;
$user = \App\User::find($egroup_member->user_id);
if ($user) {
$charges = \App\EventBookingCharges::where("user_id", "=", $user->user_id)
->where("booking_id", "=", $booking->booking_id)->get();
$paid_amount = 0;
$balance_amount = 0;
if ($charges->count() > 0) {
foreach ($charges as $charge) {
if ($charge->status == 1) {
$paid_amount = $paid_amount + $charge->amount;
} else {
$balance_amount = $balance_amount + $charge->amount;
}
}
})
echo "<tr>";
if ($row == 1) {
echo "<td>" . $egroup->name . "</td>"; // Sort using this data
} else {
echo "<td></td>";
}
if ($row == 1) {
echo "<td>" . ($chalet ? $chalet->name : '') . "</td>";
} else {
echo "<td></td>";
}
echo "</tr>";
}
}
echo "<tr><td colspan='9'><br></td></tr>";
}
}
}
}
echo "</table>";
}
}
我该如何解决这个问题?我试过orderBy('name');,但没用。我也试过在谷歌上搜索它,但所有的教程都是关于排序数组的。
【问题讨论】:
-
需要更多上下文和代码。
$row来自哪里?你在哪里试过orderBy?结果是否来自数据库?细节,伙计!详情! -
对不起@ChrisSprague,先生。我更新了问题,请检查。感谢您的回复
-
1.你似乎有很多东西可以在这里分类。那么你想要排序的是什么? 2.这看起来像laravel。也许你应该提一下,因为普通 php 没有排序的可能性
-
@Cashbee 我只需要按组名
$egroup->name对其进行排序。感谢您的回复 -
这让我很困惑,因为 \App\EventGroup::find($booking->eg_id);仅返回 1 个 EventGroup,您无法对 1 个事物进行排序;)