Сортировать Laravel jsonb по дополнительному ключуPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Сортировать Laravel jsonb по дополнительному ключу

Сообщение 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"
}
}

}
}
}


Подробнее здесь: https://stackoverflow.com/questions/773 ... by-sub-key
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»