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:)

Другие вопросы по тегам