最近开发,由于组合统计数据,出现重复数据无法解决,只能拆一个表出来,对数据库进行两次查询,但是需要对查询出来的数据进行整合。于是出现了一点问题
参照了5.0开发文档
$list = Db::name('user')->where('status',1)->paginate()->each(function($item, $key){
$item['nickname'] = 'think';
return $item;
});
然而并不行,
再参照博客 https://blog.csdn.net/amberom/article/details/78937765
可能是我的数据有问题 还是无法修改已经分页好的东西
$project = Db::name('table')->alias('t')
->field('t.id, t.name, t.tea_name, t.status,count(tp.id) as t_p')
->join('tea_project tp', 'tp.teacher_id=t.id','left')
->where($where)
->group('tp.teacher_id')
->paginate(5,false,['query' => request()->param()])
->each(function($item, $key){
$wctypeid = $item["id"]; //获取数据集中的id
$num = Db::name('table')->where("teacher_id='$wctypeid'")->count('id'); //根据ID查询相关其他信息
$item['num'] = $num; //给数据集追加字段num并赋值
return $item; });
有谁要是知道答案,可以告诉下,哪里写错了0.0
然后参照博客 https://my.oschina.net/laobia/blog/1786840
通过下面的方法进行了修改,结果显示是成功的
$project = Db::name('table')->alias('t')
->field('t.id, t.name, t.tea_name, t.status,count(tp.id) as t_p')
->join('tea_project tp', 'tp.teacher_id=t.id','left')
->where($where)
->group('tp.teacher_id')
->paginate(10);
$student = Db::name('table')->field('count(id) as t_s,teacher_id')->group('teacher_id')->select();
$css = $project->all();//因为paginate是个对象 所以要先转化为all()方法获取实际数据的数组
foreach ($css as $key => $value) {//不想在foreach里面去循环请求数据库所以先在上面一步查询出来
foreach ($student as $k => $v) {
if($value['id'] == $v['teacher_id']){
$value['t_s']= $v['t_s'];
$project[$key] = $value;//此处是直接对里面的值进行替换
}
}
}