1

首先,我对fuelphp 真的很陌生,如果需要,您可以否决这个问题。我的问题是我做了一个类似 facebook 的墙,我不太了解评论的逻辑。

所以我试着以这种方式加入我的桌子

static function get_stream()
    {
        $query = DB::select()->from('stream_post');
        $query->join('users_metadata');
        $query->on('stream_post.user_id', '=', 'users_metadata.user_id');
        $query->join('stream_comment');
        $query->on('stream_post.stream_id', '=', 'stream_comment.stream_id');
        $query->order_by('stream_post.stream_id', 'DESC');
        $result = $query->execute();
        if(count($result) > 0) {    
            foreach($result as $row)
            {
                $data[] = $row;
            }

            return $data;
        }

    }

这样做的问题是,这仅显示流发布有评论的内容,而不显示其他内容。

那么请有人给我一个逻辑,如何加入表格以将这些帖子显示给没有评论的内容?

4

1 回答 1

2

试试看:

static function get_stream()
    {
        $query = DB::select()->from('stream_post');
        $query->join('users_metadata');
        $query->on('stream_post.user_id', '=', 'users_metadata.user_id');
        $query->join('stream_comment', 'RIGHT'); // The RIGHT JOIN keyword returns all rows from the right table, even if there are no matches in the left table.
        $query->on('stream_post.user_id', '=', 'stream_comment.user_id');
        $query->order_by('stream_post.stream_id', 'DESC');
        $result = $query->execute();
        if(count($result) > 0) {    
            foreach($result as $row)
            {
                $data[] = $row;
            }

            return $data;
        }
}

编辑: 该查询应该可以工作(当每个user_idfromstream_post都具有相同user_idusers_metadata. 只需将此查询转移到fuelphp (我之前没有使用它)。

SELECT *
FROM stream_post
RIGHT JOIN stream_comment
ON stream_post.stream_id = stream_comment.stream_id
JOIN users_metadata
ON stream_post.user_id = users_metadata.user_id
ORDER BY stream_post.stream_id DESC
于 2012-08-29T08:50:57.797 回答