设为首页
收藏本站
Archiver
用户
登录
入住
用户名
Email
自动登录
找回密码
密码
登录
入住 CI 中国社区
首页
返回 CodeIgniter 中国首页
论坛
BBS
导读
Guide
个人主页
Space
中文手册
搜索
CodeIgniter 搜索引擎
视频教程
案例
任务
搜索
搜索
本版
帖子
用户
设为首页
收藏本站
Archiver
开启辅助访问
切换到宽版
日志
相册
分享
记录
CodeIgniter4
CodeIgniter3
CodeIgniter2
帖子
好友
道具
勋章
收藏
任务
记录
留言板
设置
我的收藏
退出
腾讯QQ
微信登录
CodeIgniter 中国开发者社区
»
论坛
›
CodeIgniter 开发
›
CodeIgniter 进阶讨论
›
视图中如何嵌套循环,内层循环去查询数据库?【求解】 ...
返回列表
查看:
9027
|
回复:
8
[视图]
视图中如何嵌套循环,内层循环去查询数据库?【求解】
[复制链接]
iserich
iserich
当前离线
积分
720
IP卡
狗仔卡
发表于 2010-5-31 17:30:38
|
显示全部楼层
|
阅读模式
现在有需求显示用户列表,用户信息中有用户的作品信息。
如下图所示:
现在把用户数据提取出来了。在Views里写了一个用户数组的foreach.
以下是测试代码。CI不支持View回调Model函数吧?
所以这样是行不通的。
PHP
复制代码
<?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里把数据查询好。
这个应该算常用问题吧?如果你遇到过这种问题,怎么解决的分享一下吧!谢谢了!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
kkk
kkk
当前离线
积分
206
IP卡
狗仔卡
发表于 2010-5-31 18:02:34
|
显示全部楼层
在model中把所有业务逻辑处理好,而view只是简单的foreach,至于怎么拼装,你可以用数组,也可以new 一个stClasss,用对象处理。
回复
支持
反对
使用道具
举报
显身卡
haohailuo
haohailuo
当前离线
积分
1091
IP卡
狗仔卡
发表于 2010-5-31 18:26:47
|
显示全部楼层
楼上正解,所有业务逻辑及数据处理都尽量放在model中,试图只是显示内容的和简单的处理,尽量不要再视图中写你的业务逻辑
回复
支持
反对
使用道具
举报
显身卡
yunnysunny
yunnysunny
当前离线
积分
1852
IP卡
狗仔卡
发表于 2010-5-31 20:46:16
|
显示全部楼层
回复
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循环了。
回复
支持
反对
使用道具
举报
显身卡
Hex
Hex
当前离线
积分
50167
IP卡
狗仔卡
发表于 2010-6-1 00:45:44
|
显示全部楼层
没错,应该是把视图所需要的所有数据全部准备好,再传递到视图,这是一个 mvc 的基本原则。
回复
支持
反对
使用道具
举报
显身卡
iserich
iserich
当前离线
积分
720
IP卡
狗仔卡
楼主
|
发表于 2010-6-1 09:49:57
|
显示全部楼层
谢谢大家,我知道怎么做了。写Model吧。
CI挺高效的,写起来也比较舒服。逻辑比较清楚!
回复
支持
反对
使用道具
举报
显身卡
spt119
spt119
当前离线
积分
866
IP卡
狗仔卡
发表于 2010-6-5 15:40:12
|
显示全部楼层
嵌套循环,最好的解决办法是,把相关数据都从数据库中取出并分别放入对应数组中。
然后在view中,执行相关的匹配条件,即可。
如:
foreach( (array)$array_a as $key => $a )
{
foreach( (array)$array_b as $key => $b )
{
if( $a['id'] == $b['id'] )
{
//你的表达式
}
}
}
回复
支持
反对
使用道具
举报
显身卡
guodong
guodong
当前离线
积分
4
IP卡
狗仔卡
发表于 2010-6-13 11:04:04
|
显示全部楼层
我也想知道
回复
支持
反对
使用道具
举报
显身卡
栤葑の噯
栤葑の噯
当前离线
积分
108
IP卡
狗仔卡
发表于 2013-2-22 14:18:44
|
显示全部楼层
学习了,呵呵呵!!!!
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
入住 CI 中国社区
本版积分规则
发表回复
回帖后跳转到最后一页