我有一个 API,它返回一个对象作为结果中的包装数据,如下所示:
{
data: {
totalSalesPrice: 0,
totalDiscount: 0,
finalPrice: 0
}
}
但我希望它是一个如下所示的数组:
{
data: [
totalSalesPrice: 0,
totalDiscount: 0,
finalPrice: 0
]
}
或者甚至像下面这样:
{
data: [
{
totalSalesPrice: 0,
totalDiscount: 0,
finalPrice: 0
}
]
}
我怎样才能实现这个目标?这是我的方法:
public function getPriceDetails($bookingId)
{
$booking = AccommodationBooking::where('id', $bookingId)->with('accommodationRoom')->first();
$roomsOfBook = DB::table('accommodation_booking_accommodation_room')->where('accommodation_booking_id', $bookingId)->get();
$result = [];
foreach ($roomsOfBook as $room) {
$roomPricingHistory = RoomPricingHistory::where('accommodation_room_id', $room->accommodation_room_id)
->whereDate('from_date', '<=', $booking->from_date)
->whereDate('to_date', '>=', $booking->to_date)
->orderBy('created_at', 'desc')
->first();
$result[] = $roomPricingHistory;
}
$totalSalesPrice = collect($result)->sum('sales_price');
$totalDiscount = 0;
$finalPrice = $totalSalesPrice;
$result['totalSalesPrice'] = $totalSalesPrice;
$result['totalDiscount'] = $totalDiscount;
$result['finalPrice'] = $finalPrice;
return new RoomDetailResource($result);
}
最佳答案
我想看看您如何返回 RoomDetailResource 中的数据。 理想情况下,要实现第二个结果,您只需返回 JSON 响应即可 您的 RoomDetailResource 的方式:
return response()->json([
'data' => your_result
], status_code);
假设这是我们要输出的结果:
$result['totalSalesPrice'] = $totalSalesPrice;
$result['totalDiscount'] = $totalDiscount;
$result['finalPrice'] = $finalPrice;
在这种情况下,您将得到输出:
{
data: [
{
totalSalesPrice: 0,
totalDiscount: 0,
finalPrice: 0
}
]
}
这是我的代码示例:
关于php - 将 api 输出从对象更改为数组 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890748/