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字段,且是一对多的关系。如图:
展开
 我来答
柚子ok丶
2016-12-07 · TA获得超过815个赞
知道小有建树答主
回答量:646
采纳率:93%
帮助的人:184万
展开全部
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']',【?】);
【?】应该是什么变量呢?
散文精选大全
2016-12-07 · 想要多少有多少,都来看看
散文精选大全
采纳数:176 获赞数:242

向TA提问 私信TA
展开全部
有专门的开发文档的。你查下就知道了
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小时在线
立即免费咨询律师
16290人正在获得一对一解答
上海旋风骑士2分钟前提交了问题
上海旋风骑士2分钟前提交了问题
广州萤火虫6分钟前提交了问题
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消
还有疑问? 马上咨询38616位在线律师,3分钟快速解答
立即免费咨询律师

辅 助

模 式