Laravel Nova Обработка вложенных данных Mysql JSON
У меня есть таблица с вопросами, где сам вопрос и количество вопросов могут меняться. Вместо того, чтобы связывать данные с FK, я просто решил взять данные вопроса и сохранить их в столбце JSON с данными родительской записи (человека, который ответил на вопросы). JSON не будет управлять какой-либо аналитикой или показателями, поэтому меня не беспокоит проблема производительности. Я просто хочу сделать снимок вопросов, на которые они ответили, и того, какими они были в то время.
Вот как это отформатировано.
[{
"id": 2,
"question": "Question 1",
"response": "no",
"created_at": "2020-05-19T15:34:09.000000Z",
"updated_at": "2020-05-19T15:34:09.000000Z"
}, {
"id": 3,
"question": "Question 2",
"response": "no",
"created_at": "2020-05-19T15:39:28.000000Z",
"updated_at": "2020-05-19T15:39:28.000000Z"
}, {
"id": 4,
"question": "Question 3",
"response": "no",
"created_at": "2020-05-19T15:39:38.000000Z",
"updated_at": "2020-05-19T15:53:55.000000Z"
}]
Когда я пытаюсь отобразить данные, используя KeyValue::make('Meta')
он помещает один символ в столбец ключ и значение для всего json, создает тысячи "пар" Key=> T, Value=> H, и так далее.
Однако я могу использовать...
KeyValue::make('Meta', 'meta.0')
KeyValue::make('Meta', 'meta.1')
KeyValue::make('Meta', 'meta.3')
К сожалению, этот подход предполагает, что я знаю, на сколько вопросов они ответили, но не знаю. Если я просто добавлю больше, чем ожидаю, это создаст дополнительные мета-заполнители без данных.
Его можно использовать, но я предполагаю, что есть способ подсчитать записи JSON и создать Return
в зависимости от количества записей.