mysql - 查询mysql的帖子和评论系统

标签 mysql codeigniter

我正在使用 codeigniter 来创建帖子和评论系统。我做了所有的查询,但我不知道如何在表 post_comment 中获取评论。这是我对共享所有帖子的查询。感谢您的帮助。

function get_post_profile($user_id,$limit) {
        $this->db->select('post_user.user_id,post_user.id_post_shared,post_shared.post_text,users.name,users.surname,users.id');
        $this->db->join('post_shared', 'post_shared.id_post = post_user.id_post_shared');
        $this->db->join('users','users.id = post_user.user_id');
        $this->db->where('post_user.user_id',$user_id);
        $this->db->order_by('post_user.id_post_shared','DESC');
        $this->db->limit($limit);
        $query = $this->db->get('post_user');

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return false;
        }

    }

用户表

id | name | surname |
1    jhon    Smith
2    Sally   Dunk

post_user 表

id_post_shared | user_id |
      1             1

post_share 表

id_post | post_text
   1      Hello guys

post_comment 表

comment_text | id_post | id_user
   Hello!        1          2

最佳答案

尝试并回复:

$this->select('post_comment.comment_text, post_comment.id_post, post_comment.id_user')->join('post_share', 'post_share.id_post = post_comment.id_post')->join('users', 'users.id = post_comment.id_user')->get('post_comment');

编辑

function get_comments(){
    $data   = array();
    $posts  = array();
    $posts  = $this->db->select('id_post as post_id, post_text', false)->order_by('id_post', 'desc')->get('post_share', 10)->result_array();   #get first 10 posts
    if( is_array( $posts ) && count( $posts ) > 0 ){
        foreach( $posts as $key=>$each ){
            ## gather the comments for the posts ###
            $comments   = array();
            $comments   = $this->db->select('comment_text, id_user')->where('id_post', $each['post_id'])->get('post_comment')->result_array();
            if( is_array( $comments ) && count( $comments ) ){
                $posts[$key]['comments']    = $comments;
            }
        }
    }
    return $posts;
}

编辑 1

if( isset( $posts ) && is_array( $posts ) && count( $posts ) > 0 ){
    foreach( $posts as $key=>$each ){
        echo "Post id :".$each['post_id']." Post txt: ".$each['post_text']."<br>";
        if( isset( $each['comments'] ) && is_array( $each['comments'] ) && count( $each['comments'] ) ){
            foreach( $each['comments'] as $subKey=>$subEach ){
                echo "Comment Txt :".$subEach['comment_text']."<br>";
            }
        }
    }
}

关于mysql - 查询mysql的帖子和评论系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18720268/

相关文章:

java - 从 Web 应用程序 GUI 创建数据库备份

php - Codeigniter URI 路由和安全

codeigniter - 从数据库下载文件或在 codeigniter 中保存文件夹

php - Codeigniter 验证库在 session 中存储错误

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - 我如何在 Laravel 5.2 查询中返回自定义文本?

mysql - 为什么索引列在查询 `IS NULL` 时返回结果会很慢?

mysql - 为 MySQL/Tomcat/Maven Java Webapp 创建 Docker 文件

php - 来自 CLI : not entering controller 的 Codeigniter HMVC

php - 如果数据库发生错误,如何将页面重定向到其他页面