将标签表连接到Codeigniter中的帖子表

时间:2011-10-17 18:42:05

标签: php mysql codeigniter tags

我需要一些帮助来检索属于特定标签组的帖子。我正在使用Codeigniter和MySQL。

我的表格如下:

帖子 - 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 :(得分:0)

我没有对此进行测试,但我认为您需要在查询中添加连接类型:

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