у меня есть competition
модели (конкуренция по существу большой формы для заполнения), что hasMany
groups
(группы полей), которые hasMany
fields
. Когда пользователь заполняет форму, я создаю одну запись entry
, в которой hasMany
полевых представлений (называемых элементами). Таким образом, одна запись может выглядеть следующим образом:Laravel петли на основе внутренних значений
id form_id
-------------
2 5
В таблице полевые материалы (элементы) может выглядеть следующим образом:
id entry_id field_id value
----------------------------------
1 2 2 Dave
2 2 3 30
Так что, если я бегу:
$entry = Entry::with('elements.field.group')->find($id);
Я получаю примерно следующее:
{
"id": 16,
"competition_id": 1,
"elements": [
{
"id": 8,
"field_id": 1,
"entry_id": 16,
"content": "F",
"field": {
"id": 1,
"name": "gender",
"label": "Gender",
"type": "radio",
"group_id": 1,
"group": {
"id": 1,
"order": 1,
"competition_id": 1
}
}
},
{
"id": 9,
"field_id": 2,
"entry_id": 16,
"content": "fds",
"field": {
"id": 2,
"name": "name",
"label": "Your name",
"type": "text",
"group_id": 1,
"group": {
"id": 1,
"order": 1,
"competition_id": 1
}
}
}
]
}
Чтобы отобразить их, я бы хотел в идеале сделать @foreach($groups as $group)
, но группы существуют только в element->field->group
. Как я могу провести реорганизацию массива, чтобы это можно было сделать? Есть ли способ перестроить массив изнутри? Или есть способ сортировки данных, поскольку я беру его из Laravel?