Kohana Jelly: как быстро создать массив из коллекции Jelly? - PullRequest
0 голосов
/ 20 февраля 2011

Скажем, у вас есть модель Person. Каждый объект Person может иметь много друзей (Field_HasMany).

Если вы хотите получить простой массив пар имени / идентификатора для друзей данного персонажа, быстрее / лучше получить друзей следующим образом:

$friends = $person->friends;

, а затем создать массив из этого объекта с циклом foreach

OR

сделать выбор, вот так:

$friends = Jelly::select('friend')
->join('people')
->on('person.id','=','friends_people.person_id')
->where('person_id','=',$person->id)
->execute()  
->as_array('name', 'id');

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

По сути, Jelly создает правильный запрос, когда вы запрашиваете друзей $ человека (что похоже на ваш пользовательский запрос)

Чтобы получить друзей в массиве, вы можете сделать то же самое, что и с вашим пользовательским запросом:

$friends = $person->friends->as_array('id', 'name');
0 голосов
/ 21 февраля 2011

проблема в другом ... потому что у одного (заметьте ОДНОГО) человека может быть много (МНОГИЕ) друзей, поэтому отношения не много ко многим это один ко многим: S другие думают, что если вам действительно нужно много-много отношений, которые вам нужнытретий стол для склеивания.в этом случае, если у вас есть отношения один ко многим, «у человека много друзей».Вы можете сделать Person-> friends-> findAll (), чтобы получить всех друзей данного человека ID:)

...