我需要一些帮助来检索属于特定标签组的帖子。我正在使用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数组匹配的标记?
谢谢!
答案 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