我正在开发一个小型CMS,帖子很喜欢。我将喜欢的内容存储在另一个表格中,以便在用户的信息中心中找到喜欢的帖子。
“喜欢”表
» likes
- id
- user
- post
- timestamp
但现在我想在一个页面中显示最喜欢的帖子。如何实现?
答案 0 :(得分:2)
首先制作一个能够获得帖子细节的函数
public function get_post_details(){
$sql = 'SELECT pt.id, pt.details <- (you can select whatever you want to display) ';
$sql .= 'FROM post_table pt ';
$query = $this->db->query($sql);
$result = $query->row();
foreach ($result as $key => $value)
{
$result->post_likes = $this->get_post_likes_by_id($result->id);
}
return ( $query->num_rows() ) ? $result : FALSE;
}
然后制作第二个函数,它将获得like_table中的所有喜欢,假设用户的每个帖子都会在表中添加一行,如下所示
如果first_user喜欢post1,那么喜欢的表会存储这样的数据
likes_table
id post_id user_likes
1 1 1
然后第二个用户用户喜欢post1,它应该像这样
likes_table
id post_id user_likes
1 1 1
2 1 2
user_likes是喜欢帖子的用户的ID
第二个功能
public function get_post_likes_by_id($post_id) {
$params = [];
$sql = 'SELECT COUNT(lt.id) total_likes ';
$sql .= 'FROM likes_table lt ';
$sql .= 'WHERE lt.post_id = ? ';
$params[] = $post_id;
$query = $this->db->query($sql, $params);
$likes = $query->result();
$data = [];
foreach ($likes as $like)
{
array_push($data, $like->total_likes);
}
return $data;
}