2015-05-29 103 views
3

我有4个表格:process,country,process_country和category。每个进程都属于某个类别。一个国家可能有几个可用的流程,并且一个流程可能在几个国家可用。下面是我的数据库结构:在codeigniter视图中嵌套的foreach

category table  process table  country table  process_country 
--------------  --------------  -------------  --------------- 
categoryid   processid   countryid   countryid 
categoryname   processname   countryname  processid 
        categoryid 
        countryid 

我创建函数来获取每个国家所有可用的过程,但 我希望他们的相应类别下显示的过程,但我不知道如何实现。我能够单独列出所有的流程和类别,但我不知道如何嵌套它们。我想实现一个网页,每个国家像这样的列表:

> 1. Category 1 
>  Process 1 
>  Process 2 
> 2. Category 2 
>  Process 3 

我想到一个嵌套的foreach循环:

<?php 
     foreach ($category as $c) { 
      echo "<li>" . $c->CategoryName . "</li>"; 
      foreach ($process as $r) { 
       echo "<li><a href=\"" . base_url() . "index.php/process/id/" . $r->ProcessID . "\" target=\"_blank\">" . $r->ProcessName . "</a></li>"; 
      } 
     } 
    ?> 

,但我不知道如何实现对另一个foreach循环该类别下的所有流程。

控制器:

$data['process'] = $this->getProcesses(); //function that gets process available for the country 
$data['category'] = $this->getCategories(); //function that gets all categories 
$this->load->view('includes/template', $data); 
+0

您应该能够从SINGLE查询中获取所需的那些表中的所有数据。 – RiggsFolly

回答

0

里面$data['process']你需要有category ID和内部$data['category']

那么只有你可以同时匹配,例如,foreach循环就会像下面

<?php 
     foreach ($category as $c) { 
      echo "<li>" . $c->CategoryName . "</li>"; 
      foreach ($process as $r) { 
       if($r['cat_id']==$c['id']){ 
echo "<li><a href=\"" . base_url() . "index.php/process/id/" . $r->ProcessID . "\" target=\"_blank\">" . $r->ProcessName . "</a></li>"; 
     } 

      } 
     } 
    ?> 

如果Id匹配,那么你将打印它们!

快乐编码!

+1

谢谢。这工作。 :) – dats

+0

伟大的,高兴地帮助你,Upvote这个答案这可能会帮助其他人得到确切的答案。 快乐编码亲爱的! – Thamaraiselvam