Kohana Jelly: как быстро создать массив из коллекции Jelly?
Скажем, у вас есть модель Персона. Каждый объект Person может иметь много друзей (Field_HasMany).
Если вы хотите получить простой массив пар имя / идентификатор для друзей данного персонажа, быстрее / лучше получить друзей следующим образом:
$friends = $person->friends;
а затем создать массив из этого объекта с циклом foreach
ИЛИ ЖЕ
сделать выбор, вот так:
$friends = Jelly::select('friend')
->join('people')
->on('person.id','=','friends_people.person_id')
->where('person_id','=',$person->id)
->execute()
->as_array('name', 'id');
2 ответа
По сути, Jelly создает правильный запрос, когда вы запрашиваете друзей $people (что похоже на ваш пользовательский запрос)
Чтобы найти друзей в массиве, вы можете сделать то же самое, что и с вашим пользовательским запросом:
$friends = $person->friends->as_array('id', 'name');
Проблема в другом... потому что у одного (обратите внимание, ОДНОГО) человека может быть много (МНОГИХ) Друзей, поэтому отношения не много ко многим это один ко многим:S другие думают, что если вам действительно нужно много-много отношений, вам нужна третья таблица клеить. в этом случае, если у вас есть отношения один ко многим, "у человека много друзей". Вы можете сделать Person->friends->findAll(), чтобы получить всех друзей данного человека ID:)