>我有 2 个表:
category(id_cat,cat_name)
sub_cat(id_cat,id_sub_cat,sub_cat_name)
我想通过连接这些表来创建视图。我用这样的代码创建了一个控制器:
$d['category'] = $this->db->query('select * from category a left join sub_cat b on a.id_cat=b.id_cat');
$this->load->view('cat',$d);
和我的观点:
<table><tr><th>Cat Name</th><th>Sub Cat Name</th></tr>
<?php foreach($category->result_array() as $dt) { ?>
<tr><td><?php echo $dt['cat_name'] ?></td><td><?php echo $dt['sub_cat_name']?></td></tr>
<?php } ?>
</table>
我的观点的结果是这样的:
------------------------
cat_name | sub_cat_name
------------------------
cat1 | sub 1
cat1 | sub 2
cat1 | sub 3
------------------------
cat2 | sub 1
cat2 | sub 2
------------------------
但我希望视图是这样的:
------------------------
cat_name | sub_cat_name
------------------------
cat1 | sub 1
| sub 2
| sub 3
------------------------
cat 2 | sub 1
| sub 2
------------------------
您可以使用
一个temp
变量来存储cat_name
并检查该cat_name
是否已使用,否则它不会在您的视图中回显:
<?php
$temp = '';
foreach($category->result_array() as $dt) {
if ($dt['cat_name'] != $temp) {
echo $dt['cat_name'];
$temp = $dt['cat_name'];
}
}
?>
你也可以把它放到功能中,这样在你的视图中它会很混乱。希望这有帮助。注意:建议必须在方法(帮助程序)文件上完成查询的格式化,这样您就不会有胖控制器。
编辑
你可以在这里检查小提琴:http://codepad.org/WwUm4zeZ