Как реализовать ORM с несколькими отношениями в Kohana?

У меня проблема с отношениями в Kohana ORM. У меня есть три модели: User, Song и Tag.

User {
    has many Songs;
    has many Tags; (followed tags)
}

Song {
    belongs to User;
    has many Tags;
}

Tag {
    has many Users;
    has many Songs;
}

Пример:

  • Пользователь «Naimad» использует теги: Deadmau5 и Inpetto.
  • Each tag have two songs:
    1. Deadmau5 tag has: The Veldt and Strobe,
    2. Тег Inpetto имеет: Чудо Тока и Буря.

Я хочу получить эти песни из тегов, за которыми следует пользователь, я не знаю, как это сделать. Я знаю, что это глупый пример, но я пытался, прежде чем опубликовать этот вопрос:

$songs = ORM::factory('user', array('name' => 'Naimad'))
    ->tags
    ->songs
    ->find_all();

person Naimad    schedule 17.06.2012    source источник


Ответы (1)


Я думаю, вам нужно использовать ->with('tag')->with('song')

$songs = ORM::factory('user', array('name' => 'Naimad'))
    ->with('tags')
    ->with('songs')
    ->find_all();

затем для доступа к значению выполните цикл для объектов $s->tags->field_name ... и т. д.

person Tarek    schedule 19.06.2012