我试图从我的论坛和其中的子论坛获取所有主题。但是,出于某种原因,我的代码无法正常工作。它没有给我任何错误,但它显示错误的信息。我正在使用medoo。 这是我的功能:
public function getForumTopicsCount($forumId)
{
$getForumTopicsCount = $this->db->count('forum_topics', [
"topic_forum" => $forumId
]);
$subForums = $this->db->query("SELECT * FROM `forums` WHERE forum_subforum = $forumId")->fetchAll();
$c = 0;
foreach($subForums as $subForum) {
$subForumTopics = $this->db->query("SELECT * FROM `forum_posts`")->fetchAll();
foreach($subForumTopics as $topic) {
if ($subForum['forum_id'] == $topic['topic_forum']) {
$c++;
}
}
}
return $getForumTopicsCount + $c;
}
所以在我的数据库中我有一个表论坛,我有一个列forum_subforum这是一个整数,它的值是他们的头论坛的id。我还有一个forum_topics表,其中包含我整个论坛中的所有主题,其中我有一个名为topic_forum的列,它也是整数,是该主题所属论坛的ID。
感谢您的帮助。非常感谢。
答案 0 :(得分:1)
我并非100%确定我理解您的问题,但是从您的代码中我想您想知道某个论坛中有多少主题,包括论坛可能有的任何子论坛。
我相信以下查询应该做到这一点:
select count(*) from forum_topics
right join forums on forum_topics.topics_forum = forums.id
where forums.forum_id = :id or forums.forum_subforum = :id
请允许我就您的代码发表一些评论:
select *
。将查询限制为您需要的内容。