thinkphp3.2.3 关于两表关联的问题。
有两张表a和b。表a中包含:id、xiangmu(项目名称)两个字段。表b中包含:id、uid和name(人员姓名)三个字段。其中表a中的id字段和表b中uid字段是一对...
有两张表 a 和 b。表a中包含:id、xiangmu(项目名称)两个字段。表b中包含:id、uid和name(人员姓名)三个字段。其中表a中的id字段和表b中uid字段是一对多的关系。现在在view层中用volist已经遍历出了表a的每个id对应的信息,可是我还想得到每个id对应的表b的uid的个数以及uid对应的name。请问怎么写?
C层代码:
public function a_list(){
$data =M('a');
$this->infos = $data->select();
$this->display();
}
V层代码:
<volist name="infos" id="info">
项目编号:{$info.id}<br>
项目名称:{$info.xiangmu}<br>
项目人数:<!--此处需要表a的id对应的表b的uid的条数--><br>
人员姓名:<!--此处需要表b的uid对应的每个name--><br>
</volist>
请问C层和V层应该怎么写呢?我用的是3.2.3.谢谢!!!最好能写段完全的代码给我,解决的话我再加分以示感谢~
表a中id字段等于表b中uid字段,且是一对多的关系。如图: 展开
C层代码:
public function a_list(){
$data =M('a');
$this->infos = $data->select();
$this->display();
}
V层代码:
<volist name="infos" id="info">
项目编号:{$info.id}<br>
项目名称:{$info.xiangmu}<br>
项目人数:<!--此处需要表a的id对应的表b的uid的条数--><br>
人员姓名:<!--此处需要表b的uid对应的每个name--><br>
</volist>
请问C层和V层应该怎么写呢?我用的是3.2.3.谢谢!!!最好能写段完全的代码给我,解决的话我再加分以示感谢~
表a中id字段等于表b中uid字段,且是一对多的关系。如图: 展开
2个回答
展开全部
public function lists(){
$list1 = M('a')->select();//a表所有项目id
foreach ($list1 as $k1=>$v1){
//通过a表id关联b表uid,查询b表name及每个项目人数
$list2 = M('b')->where(array('uid'=>$v1['id']))->select();
$list1[$k1]['people_num'] = count($list2);//每个项目人数
foreach ($list2 as $k2=>$v2){
$list1[$k1]['xiangmu_name'][$k2]['name'] = $v2['name'];//项目名称
}
}
dump($list1);//三维数组,每个项目包含多个人员,html需要volist嵌套循环
$this->assign('list',$list1);
$this->display();
}
//以下是打印的结果:
array(2) {
[0] => array(4) {
["id"] => string(1) "1"
["xiangmu"] => string(7) "项目1"
["people_num"] => int(2)
["xiangmu_name"] => array(2) {
[0] => array(1) {
["name"] => string(6) "张三"
}
[1] => array(1) {
["name"] => string(6) "张四"
}
}
}
[1] => array(4) {
["id"] => string(1) "2"
["xiangmu"] => string(7) "项目2"
["people_num"] => int(2)
["xiangmu_name"] => array(2) {
[0] => array(1) {
["name"] => string(6) "李四"
}
[1] => array(1) {
["name"] => string(6) "李五"
}
}
}
}
//html代码:嵌套循环
<volist name="list" id="vo">
项目编号:{$vo.id}<br>
项目名称:{$vo.xiangmu}<br>
项目人数:{$vo.people_num}<br>
<volist name="list['xiangmu_name']" id="xm_name">
人员姓名:{$xm_name.name}<br>
</volist>
</volist>
追问
感谢!可是找你这个方法,人员姓名还是显示不出来啊。。。
$this->assign('list['xiangmu_name']',【?】);
【?】应该是什么变量呢?
展开全部
有专门的开发文档的。你查下就知道了
public function a_list(){
$data =M('a');
$data2 =M('b');
$this->infos = $data->select();
foreach($this->infos as $item){
$people = $data2->field('name')->where(' uid='.$item['id'])->select();
$this->infos['num'] = count( $people);
$this->infos['name'] = implode(",",array_values( $people ));
}
$this->display();
}
你自己可以根据你的需求整理下 ,这个我是随手下的你的自己测试总结
public function a_list(){
$data =M('a');
$data2 =M('b');
$this->infos = $data->select();
foreach($this->infos as $item){
$people = $data2->field('name')->where(' uid='.$item['id'])->select();
$this->infos['num'] = count( $people);
$this->infos['name'] = implode(",",array_values( $people ));
}
$this->display();
}
你自己可以根据你的需求整理下 ,这个我是随手下的你的自己测试总结
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
您可能需要的服务
百度律临官方认证律师咨询
平均3分钟响应
|
问题解决率99%
|
24小时在线
立即免费咨询律师
12387人正在获得一对一解答
成都星星点灯5分钟前提交了问题
西安夜猫子4分钟前提交了问题
苏州天空之城3分钟前提交了问题