Codeigniter Datamapper список многих ко многим - PullRequest
2 голосов
/ 24 марта 2012

У меня есть 2 многие ко многим таблицам отношений; Посты и Категории. Один пост может иметь много категорий. У меня вопрос, как я могу показать список сообщений с их категориями?

Вот так:

Мой пост 1 (cat1, cat2, cat3)
Мой пост 2 (cat2, cat3)
Мой пост 3 (cat1)

Я пробовал эти методы;

// Create post object
$p = new Post();

// Get 30 posts
$p->get(30);

// Loop through all posts
foreach ($p as $post)
{
    // Get the current user's group
    $post->category->get();

    foreach($post->category as $category) {
       // ...
    }
}

Не нравится, потому что если я получу 30 сообщений, то в каждом цикле сообщений снова делаю запрос и снова и снова нахожу категорию.

и попробовал это:

$p = new Post();

$p->include_related('category', array('id', 'name'), TRUE, TRUE)->get(30);

foreach($p as $post) {
  // ...  
  foreach($post->category as $category) {
     // ...
  }
}

Это более близко, но эта проблема заключается в том, что я устанавливаю лимит get(30), поэтому, если в моем посте есть 2 категории, чем показано 15 постов + 15 категорий.

Каков истинный метод для многих для многих перечисления?

1 Ответ

0 голосов
/ 19 апреля 2012

Ну, в этом случае я выберу кэширование обеих таблиц в php-ассоциативных массивах, а затем зациклю только массивы.

...