如何循环遍历两个不同的表


How to loop through two different tables?

我已经考虑了几个小时了,找不到解决方案。我用谷歌搜索了整个stackoverflow,寻找一个重复的问题,但没有找到一个。(由于我的母语不是英语,这可能是原因,如果这是重复的,请标记它,并请指出我的问题)。

我有两张桌子。一个是"section table",另一个是"news table"。Section表有' Section name'和' Section id'。

新闻表有'section name', 'content description', 'content title', 'content id'。我想让我的页面看起来像这样:

第一节

  • 标题1,描述1

  • 标题2,描述2

第2部分
  • 标题1,描述1

  • 标题2,描述2

  • 标题3,描述3

每个section应该从数据库中获取最近的5条新闻。我知道这应该用一个循环来完成,我一直在使用foreach,但似乎不能使它工作。

foreach($sections as $section)
{
    echo $section->title;
    foreach($news as $new)
    {
        echo $new->title; 
        echo $new->description;
    }
}

但是这只是循环播放所有的新闻。我得到这个:

第1部分:

  • 标题1,描述1,标题2,描述2(然后标题和描述从其他部分以及)。

我想到的另一个解决方案是加入表格,但我得到的是:

第一节

  • 标题1,描述1

第一节

  • 标题2、描述2

等。不是我想要的。

请帮帮我,我一整天都被这事困住了

[编辑]这是我的控制器的简化版本:

$sections = $this->mymodel->getSections();
$id = $sections->id;
$news = $this->mymodel->getNews($id);

这是模型:

function getNews($id){
$rows = $this->db->select('title, description, sectionid, id')
             ->where('sectionid', $id)
             ->limit(5)
             ->order_by('id', 'desc')
             ->get('news')->result();
return $rows;
}
function getSections(){
$rows = $this->db->select('title, description, id')->get('section')->result();
return $rows;
}

本质上,您需要检查并确保当前新闻元素($new)具有与您正在显示的当前sections元素($section)相同的section。在不知道您的确切密钥的情况下,我无法给出更确切的答案,但请尝试以下内容:

foreach($sections as $section)
{
    echo $section->title;
    foreach($news as $new)
    {
        if ($section->name == $new->section_name)
        {
            echo $new->title; 
            echo $new->description;
            echo "<br/>";
        }
    }
}