У меня есть массивный объект jsonb, который я хочу отсортировать по порядку для каждого подраздела
каждый раздел, начинающийся с раздела_, имеет порядок ключ.
вот что я пробовал в ресурсе, но не получается его отсортировать
class FieldSettingResource extends JsonResource
{
public function toArray(Request $request): array
{
$fieldData = $this->field_data;
$sections = [];
foreach ($fieldData as $key => $value) {
if (strpos($key, 'section_') === 0) {
$sections[$key] = $value;
}
}
// Sort the sections based on the 'order' attribute
uasort($sections, function ($a, $b) {
return $a['order'] $b['order'];
});
// Overwrite original sections with sorted sections in the fieldData
foreach ($sections as $key => $value) {
$fieldData[$key] = $value;
}
return [
'id' => (string)$this->id,
'name' => $this->name,
'field_data' => $fieldData,
];
}
}
Вот пример объекта
{
"tab_patient": {
"label": "patient",
"show": true,
"section_general_info": {
"order": 1,
"label": "generalInfo",
"show": true,
"fields": {
"hospital_number": {
"id":1,
"show": true,
"mandatory": false,
"label": "hospitalNumber"
},
"nhs_number": {
"id":2,
"show": true,
"mandatory": true,
"label": "nhsNumber"
}
}
},
"section_other_info": {
"order": 2,
"label": "otherInfo",
"show": true,
"fields": {
"date_of_birth": {
"id":1,
"show": true,
"mandatory": false,
"label": "dateOfBirth"
},
"age": {
"id":2,
"show": false,
"mandatory": true,
"label": "ageAtAdmission",
"translationTab":"patientTab"
}
}
},
"section_next_of_kin": {
"order": 3,
"label": "nextOfKin",
"show": true,
"fields": {
"nok_name": {
"id":1,
"show": true,
"mandatory": false,
"label": "name",
"translationTab":"patientTab"
},
"nok_relation": {
"id":2,
"show": false,
"mandatory": true,
"label": "relation",
"translationTab":"patientTab"
}
}
}
},
"tab-admission": {
"label": "admission",
"show": true,
"section_referral_info": {
"order": 1,
"label": "referralInfo",
"show": true,
"fields": {
"type": {
"id":1,
"show": true,
"mandatory": false,
"label": "type",
"translationTab":"admissionTab"
},
"id_number": {
"id":2,
"show": true,
"mandatory": true,
"label": "idNumber",
"translationTab":"admissionTab"
}
}
},
"section_call_details": {
"order": 2,
"label": "callDetails",
"show": true,
"fields": {
"situation": {
"id":1,
"show": true,
"mandatory": false,
"label": "situation",
"translationTab":"admissionTab"
},
"referrer": {
"id":2,
"show": true,
"mandatory": false,
"label": "referrer",
"translationTab":"admissionTab"
}
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/773 ... by-sub-key
Сортировать Laravel jsonb по дополнительному ключу ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1729816443
Anonymous
У меня есть массивный объект jsonb, который я хочу отсортировать по порядку для каждого подраздела
каждый раздел, начинающийся с раздела_, имеет порядок ключ.
вот что я пробовал в ресурсе, но не получается его отсортировать
class FieldSettingResource extends JsonResource
{
public function toArray(Request $request): array
{
$fieldData = $this->field_data;
$sections = [];
foreach ($fieldData as $key => $value) {
if (strpos($key, 'section_') === 0) {
$sections[$key] = $value;
}
}
// Sort the sections based on the 'order' attribute
uasort($sections, function ($a, $b) {
return $a['order'] $b['order'];
});
// Overwrite original sections with sorted sections in the fieldData
foreach ($sections as $key => $value) {
$fieldData[$key] = $value;
}
return [
'id' => (string)$this->id,
'name' => $this->name,
'field_data' => $fieldData,
];
}
}
Вот пример объекта
{
"tab_patient": {
"label": "patient",
"show": true,
"section_general_info": {
"order": 1,
"label": "generalInfo",
"show": true,
"fields": {
"hospital_number": {
"id":1,
"show": true,
"mandatory": false,
"label": "hospitalNumber"
},
"nhs_number": {
"id":2,
"show": true,
"mandatory": true,
"label": "nhsNumber"
}
}
},
"section_other_info": {
"order": 2,
"label": "otherInfo",
"show": true,
"fields": {
"date_of_birth": {
"id":1,
"show": true,
"mandatory": false,
"label": "dateOfBirth"
},
"age": {
"id":2,
"show": false,
"mandatory": true,
"label": "ageAtAdmission",
"translationTab":"patientTab"
}
}
},
"section_next_of_kin": {
"order": 3,
"label": "nextOfKin",
"show": true,
"fields": {
"nok_name": {
"id":1,
"show": true,
"mandatory": false,
"label": "name",
"translationTab":"patientTab"
},
"nok_relation": {
"id":2,
"show": false,
"mandatory": true,
"label": "relation",
"translationTab":"patientTab"
}
}
}
},
"tab-admission": {
"label": "admission",
"show": true,
"section_referral_info": {
"order": 1,
"label": "referralInfo",
"show": true,
"fields": {
"type": {
"id":1,
"show": true,
"mandatory": false,
"label": "type",
"translationTab":"admissionTab"
},
"id_number": {
"id":2,
"show": true,
"mandatory": true,
"label": "idNumber",
"translationTab":"admissionTab"
}
}
},
"section_call_details": {
"order": 2,
"label": "callDetails",
"show": true,
"fields": {
"situation": {
"id":1,
"show": true,
"mandatory": false,
"label": "situation",
"translationTab":"admissionTab"
},
"referrer": {
"id":2,
"show": true,
"mandatory": false,
"label": "referrer",
"translationTab":"admissionTab"
}
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77308342/sort-laravel-jsonb-by-sub-key[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия