私は時間範囲のセットで予約テーブルを持っています。各範囲はデータベース内に新しい行を生成します。特定のbooking_id
ですべての予約を照会すると、4つの配列ですべての結果が得られます。私がしたいことは、それらを1つのbooking_idの下にすべてリストすることです。PHPで配列要素をグループ化してJSONとして返す方法は?
は現在、私はこのJSONが返されます:
{
"status":"success",
"data":[
{
"first_name":"John",
"user_name":"john-k",
"booking_id":"3521AE",
"nanny_id":1,
"status":0,
"amount":"36.00",
"parent_id":15,
"date":"2017-07-02",
"start_time":"12:00:00",
"end_time":"13:00:00"
},
{
"first_name":"John",
"user_name":"john-k",
"booking_id":"3521AE",
"nanny_id":1,
"status":0,
"amount":"36.00",
"parent_id":15,
"date":"2017-07-02",
"start_time":"13:00:00",
"end_time":"14:00:00"
},
{
"first_name":"John",
"user_name":"john-k",
"booking_id":"3521AE",
"nanny_id":1,
"status":0,
"amount":"36.00",
"parent_id":15,
"date":"2017-07-02",
"start_time":"14:00:00",
"end_time":"15:00:00"
},
{
"first_name":"John",
"user_name":"john-k",
"booking_id":"3521AE",
"nanny_id":1,
"status":0,
"amount":"36.00",
"parent_id":15,
"date":"2017-07-02",
"start_time":"15:00:00",
"end_time":"16:00:00"
}
]
}
を私が持っていると思い何
は、このようなものです:
{
"status":"success",
"data":[
{
"first_name":"John",
"user_name":"john-k",
"booking_id":"3521AE",
"nanny_id":1,
"status":0,
"amount":"36.00",
"parent_id":15,
"date":"2017-07-02",
"times":[
{
"start_time":"12:00:00",
"end_time":"16:00:00"
}
]
}
]
}
どのように私はこれを達成することができますか?私はコントローラでforeach
を使用して、それらをbooking_idでグループ化しようとしましたが、これはまったく機能しませんでした。私のコントローラは次のとおりです。
$booking_id = Input::get('booking_id');
$booking_array = [];
$bookings = Nanny_bookings::selectRaw('first_name, user_name, nanny_bookings.booking_id, nanny_id, status, amount, nanny_bookings.parent_id, date, start_time, end_time')
->join('booking_confirmations', 'booking_confirmations.booking_id', '=', 'nanny_bookings.booking_id')
->join('users', 'users.id', '=', 'nanny_bookings.nanny_id')
->where('nanny_bookings.booking_id', $booking_id)
->groupBy('nanny_bookings.booking_id','nanny_id', 'nanny_bookings.parent_id', 'date', 'status', 'amount', 'start_time', 'end_time')
->get();
foreach ($bookings as $key => &$entry) {
$booking_array[$entry['booking_id']][$key] = $entry;
}
$response = array(
'status' => 'success',
'data' => $booking
);
//if request is ajax
if (Request::ajax()) {
return Response::json($response);
}
どこ 'foreach'はありますか? – jeroen
@jeroenが投稿しました。 – raqulka
なぜdownvote?説明はありません – raqulka