【发布时间】:2012-03-05 20:08:08
【问题描述】:
我正在使用 CodeIgniter 构建一个 Web 应用程序。
用户可以“喜欢”或“讨厌”帖子。这些操作存储在名为 post_rating 的表中,包含以下列:
- 身份证
- post_id
- user_id
- 评分
评分可以是 0 表示中立、1 表示喜欢或 2 表示讨厌。
在我的模型中,我使用以下函数返回了每个帖子的一些基本信息:
function get_posts($thread_id)
{
$this->db->select('id, user_id, date_posted, content');
$this->db->from('post');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
我知道我需要加入 post_rating 表,但我将如何在与标题、内容等相同的数组中返回爱恨计数?
谢谢!
:)
更新!
这是我现在的模型:
function get_posts($thread_id)
{
$this->db->select('post.id, post.user_id, post.date_posted, post.content, post.status_visible, user.username, user.location, user.psn, user.clan, user.critic, user.pro, SUM(case when rating = 1 then 1 end) as love, SUM(case when rating = 2 then 1 end) as hate');
$this->db->from('post');
$this->db->join('user', 'user.id = post.user_id', 'left');
$this->db->join('post_rating', 'post_rating.post_id = post.id', 'left');
$this->db->where('thread_id', $thread_id);
$this->db->order_by('date_posted', 'asc');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
$this->db->select('id');
$this->db->from('post_vote');
return $query->result();
}
}
【问题讨论】:
-
更合理的评分方案是 0 表示中立,1 表示爱,-1 表示恨。
-
好电话。我可能会切换它。谢谢!
-
这个查询没有太大区别,但你可能会发现
SUM(rating)以后有用:)
标签: php sql codeigniter