Присоединение таблицы тегов к таблице сообщений в Codeigniter - PullRequest
1 голос
/ 17 октября 2011

Мне нужна помощь в получении сообщений, принадлежащих к определенной группе тегов.Я работаю с Codeigniter и MySQL.

Мои таблицы выглядят так:

posts - postid, title, date и т. Д.

теги - tagid, тег

post_tags - postid, tagid

Это функция, которую я использую в своей модели:

function get_posts($tags) {

    $this->db->select('*');
    $this->db->from('posts');
    $this->db->order_by('date', 'DESC');
    $this->db->join('post_tags', 'posts.postid = post_tags.postid');
    $this->db->join('tags', 'post_tags.tagid = tags.tagid');
    $this->db->where_in('tags.tag', $tags);
    $q = $this->db->get();
    return $q->result();
}

Пока что запрос работает так, как я хочу, и возвращает все нужные сообщения.

Однако при циклическом просмотре результата и настройке конкретной информации о сообщении в списке указывается только первый тег .

Возможно ли изменить структуру запросатак что каждое сообщение включает все теги, которые соответствуют исходному массиву $ tags?

Спасибо!

1 Ответ

0 голосов
/ 17 октября 2011

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

function get_posts($tags) {
    $this->db->select('*');
    $this->db->from('posts');
    $this->db->order_by('date', 'DESC');
    $this->db->join('post_tags', 'posts.postid = post_tags.postid');

    // add the "right" keyword to produce a RIGHT JOIN
    $this->db->join('tags', 'post_tags.tagid = tags.tagid', 'right'); 

    $this->db->where_in('tags.tag', $tags);
    $q = $this->db->get();
    return $q->result();
}

http://codeigniter.com/user_guide/database/active_record.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...