Я работаю над REST API на основе Elequent ORM.Мой запрос возвращает что-то вроде этого при запросе одного объекта:
$data = $this->select('objects.*')->where('id', '=', $id)->get();
Коллекция:
[
{
"id": 3414,
"type": 3,
"title": "Title",
"shorttext": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
"spacetext": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
"description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua."
}
]
Поэтому я хотел бы изменить структуру, возвращаемую API, примерно так:
[
{
"id": 3414,
"type": 3,
"text" {
"title": "Title",
"shorttext": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
"spacetext": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
"description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua."
}
}
]
Таким образом, структура немного более прозрачна для пользователя доступа.Это, конечно, должно работать и при запросе не только одного объекта через GET, но и списка объектов.
Я пытался использовать коллекции красноречивых отображений через mapToGroups()
, но ничего не получил.
Перед использованием Eloquent я использовал Medoo.Там мне просто нужно было ввести массив схем, как это, и все было сделано:
$this->schema = [
'id',
'type',
'text' => [
'title',
'shorttext',
'spacetext',
'description'
],
'prices' => [
'baseprice',
'...
Есть ли хороший способ добиться этого с помощью eloquent?