Для начала я хотел бы сказать, что я знаю, как создавать некрасивые решения для моей проблемы. Я ищу хорошие решения и лучшие практики:)
Как создать глубокие иерархические массивы (позднее для json_encode) из объектов ORM Kohana 3, включая связанные объекты, где тип отношения один-ко-многим?
Проблема в том, что метод ORM-> as_array () работает рекурсивно для отношений "имеет один" и "принадлежит", но остановит и заставит вас использовать -> find_all () вручную, когда вы встретите "has" много "отношений.
Допустим, я создаю REST-сервер JSON API, используя Kohana 3 и встроенный ORM.
Когда кто-то смотрит на этот URL: www.example.com/api/user?id=5
Им будет предоставлен объект JSON для пользователя, где id = 5.
Это orm-модели и отношения:
- Пользователь принадлежит a Страна
- Пользователь имеет много Сообщений .
- Сообщение принадлежит a Категория
Я бы хотел, чтобы это работало:
echo json_encode(
ORM::factory('user', 5)
->with('country')
->with('messages')
->with('messages:category')
->find()
->as_array()
);
и выдайте мне вывод следующим образом:
{
name: "John"
age: 54,
country_id: 5,
country: {
name: 'Sweden',
code: 'SE'
},
messages: {
{
content: 'Lorem ipsum dolor...',
category_id: 1,
category: {...}
},
{
content: 'Sit amet elit...',
category_id: 2,
category: {...}
},
{
content: 'Consectetur ipsum dolor...',
category_id: 3,
category: {...}
}
}
}
НО ЧТО НЕ РАБОТАЕТ.
Это все, что вы получите:
{
name: "John"
age: 54,
country_id: 5,
country: {
name: 'Sweden',
code: 'SE'
}
}
Кто-то разветвлял или расширял ORM Kohana 3 для поддержки такого рода функций?
Кто-нибудь знает какой-нибудь хороший модуль API Kohana 3, который как-то решает эту проблему для вас?