当喜欢的内容存储在另一个表php中时,如何显示最喜欢的帖子

时间:2016-07-25 15:41:40

标签: php mysql

我正在开发一个小型CMS,帖子很喜欢。我将喜欢的内容存储在另一个表格中,以便在用户的信息中心中找到喜欢的帖子。

“喜欢”表

» likes
    - id
    - user
    - post
    - timestamp

但现在我想在一个页面中显示最喜欢的帖子。如何实现?

1 个答案:

答案 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;
}