繁体   English   中英

如何遍历两个不同的表?

[英]How to loop through two different tables?

我已经考虑了几个小时,找不到解决方案。 我用Google搜索并在stackoverflow上搜索了一个重复的问题,但找不到一个问题。 (由于我不是英语为母语的人,这可能是原因,如果这是重复的,请将其标记为此类,并请我指出该问题)。

我有两张桌子。 一个是“分区表”,另一个是“新闻表”。 分区表具有“分区名称”和“分区ID”。

新闻表具有“部分名称”,“内容描述”,“内容标题”,“内容ID”。 我希望页面看起来像这样:

第一节

  • 标题1,说明1

  • 标题2,说明2

第二节

  • 标题1,描述1

  • 标题2,描述2

  • 标题3,描述3

每个部分应从数据库中获取最后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,说明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 )具有相同的部分。 在不知道您确切的键的情况下,我无法给出更确切的答案,而是尝试执行以下操作:

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/>";
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM