Я работаю над restfull api для разработки мобильных приложений. Я возвращаю массив php в json, который похож на
"data": {
"Waxing": [
{
"id": "119",
"provider_id": "54",
"provider_service_id": "0",
"category_id": "15",
"date": "09-06-2018",
"time": "08.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
"repeat": "D",
"deleted_at": null,
"created_at": "2018-06-09 05:22:47",
"updated_at": "2018-06-09 14:22:04",
"setdate": "09 Jun",
"name": "Waxing"
}
],
"Massage": [
{
"id": "145",
"provider_id": "54",
"provider_service_id": "0",
"category_id": "4",
"date": "14-06-2018",
"time": "08.00 AM,09.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
"repeat": "O",
"deleted_at": null,
"created_at": "2018-06-13 14:24:15",
"updated_at": "2018-06-13 14:24:15",
"setdate": "14 Jun",
"name": "Massage"
}
]
},
и создав этот вывод с помощью этой строки кода:
foreach ($getproviderdatetime as $getproviderdatetimes){
$categorycheck = Category::where('id', '=', $getproviderdatetimes->category_id)->first();
if (count($categorycheck)>0){
$alldata[$categorycheck->name][]=$getproviderdatetimes;
}
}
но теперь мне нужны данные в таком формате:
"data": {
[
"categoryname": "Waxing",
"services": [
{
"id": "119",
"provider_id": "54",
"provider_service_id": "0",
"category_id": "15",
"date": "09-06-2018",
"time": "08.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
"repeat": "D",
"deleted_at": null,
"created_at": "2018-06-09 05:22:47",
"updated_at": "2018-06-09 14:22:04",
"setdate": "09 Jun",
"name": "Waxing"
}
]
],
[
"categoryname": "massage",
"services": [
{
"id": "145",
"provider_id": "54",
"provider_service_id": "0",
"category_id": "4",
"date": "14-06-2018",
"time": "08.00 AM,09.00 AM,10.00 AM,11.00 AM,12.00 PM,01.00 PM,02.00 PM,03.00 PM,04.00 PM,05.00 PM,06.00 PM,07.00 PM",
"repeat": "O",
"deleted_at": null,
"created_at": "2018-06-13 14:24:15",
"updated_at": "2018-06-13 14:24:15",
"setdate": "14 Jun",
"name": "Massage"
}
]
]
},
У меня есть набор услуг и получение названия категории из базы данных. Я использую фреймворк Laravel и возвращаю данные в формате json. Как я могу этого добиться. Нужна помощь.
на самом деле ключ имени в сервисе может отличаться от имени категории, извините, но в этом примере я получил то же самое от db.
categoryname - это имя ключа, оно не может быть больше однажды.
извините, но это то, что требуется моей команде разработчиков, и я застрял в ней
Ваша команда очевидно требует немного другого формата, иначе ваша команда будет неопытной.
у тебя есть идея получше? Помогите, пожалуйста
Извините моя ошибка..
Полагаю, вашей команде нужен data как массив объектов. Это моя идея, но лучше попросить разъяснений у команды.
Извините, теперь я изменил свой вопрос на то, что им действительно нужно. Пожалуйста помоги
Позвольте нам продолжить обсуждение в чате.






Вот решение:
foreach ($getproviderdatetime as $getproviderdatetimes){
$categorycheck = Category::where('id', '=', $getproviderdatetimes->category_id)->first();
if (count($categorycheck)>0){
// append new item to all data:
$alldata[] = [
"categoryname" => $categorycheck->name,
"services" => [$getproviderdatetimes],
];
}
}
Спасибо @u_mulder. но теперь я получаю объект для каждой службы Jsfiddle
И это нормально. Массив предназначен только для ключей с индексом 0.
$testing = []
foreach ($alldata as $key=>$all){
array_push($testing,["categoryname"=>$key,"services"=>$all]);
}
print_r($testing);
Повторите цикл снова ur $ alldata..Ниже - ваше решение
Вы не можете. Здесь у вас одинаковые ключи
servicesиcategoryname, ключи должно быть уникальны.