视图中如何嵌套循环,内层循环去查询数据库?【求解】
现在有需求显示用户列表,用户信息中有用户的作品信息。如下图所示:
现在把用户数据提取出来了。在Views里写了一个用户数组的foreach.
以下是测试代码。CI不支持View回调Model函数吧?
所以这样是行不通的。
<?php foreach ($members as $menber): ?>
<?php $sss=$this->OTHER_DB->get("works"); ?>
<?php foreach ($sss as $studio): ?>
<?php echo $studio['id']; ?>
<?php endforeach; ?>
<?php endforeach; ?>
有什么办法可以解决这个问题呢?除了在Model里把数据查询好。
这个应该算常用问题吧?如果你遇到过这种问题,怎么解决的分享一下吧!谢谢了!{:2_32:} 在model中把所有业务逻辑处理好,而view只是简单的foreach,至于怎么拼装,你可以用数组,也可以new 一个stClasss,用对象处理。 楼上正解,所有业务逻辑及数据处理都尽量放在model中,试图只是显示内容的和简单的处理,尽量不要再视图中写你的业务逻辑 回复 2# kkk
同意。肯定是用数组将数据全部取出来,只不过这个数据可能是二维的或者三维的。$viewData = array(
array('id'=>0,'name'=>'one','detail'=>'some'),
array('id'=>1,'name'=>'two','detail'=>'some'),
array('id'=>2,'name'=>'third','detail'=>'some')
);
在model中将查询结果组织成这种形式,在controller中调用model,将上述数据传递到视图中去,然后就能用你所说的for循环了。 没错,应该是把视图所需要的所有数据全部准备好,再传递到视图,这是一个 mvc 的基本原则。 谢谢大家,我知道怎么做了。写Model吧。
CI挺高效的,写起来也比较舒服。逻辑比较清楚! 嵌套循环,最好的解决办法是,把相关数据都从数据库中取出并分别放入对应数组中。
然后在view中,执行相关的匹配条件,即可。
如:
foreach( (array)$array_a as $key => $a)
{
foreach( (array)$array_b as $key => $b )
{
if( $a['id'] == $b['id'] )
{
//你的表达式
}
}
} 我也想知道 学习了,呵呵呵!!!!
页:
[1]