首先,我对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;
}
}
这个问题是,这只会显示流发布有评论的内容,而不显示其他内容。
那么请有人给我一个逻辑如何加入表格来显示那些没有评论的帖子?
答案 0 :(得分: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_id
的每个stream_post
在user_id
中都有相同的users_metadata
。只需将此查询转移到fuelphp(之前我没有使用过它)。< / p>
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