thinkphp5 对union之后的查询进行分页
经过昨天成功执行了laravel下的union分页,今天又成功钻研出了thinkphp5的union分页![此处应该有掌声],废话不多说,下面上代码:
$m_acc = model('...'); $a = $m_acc->field('... as a,...')->where(...)->group('...')->buildSql(); $b = $m_acc->field('... as a,...')->where(...)->group('...')->buildSql(); $c = $m_acc->field('... as a,...')->where(...)->group('...')->buildSql(); $e = $m_acc->field('... as a,...')->where(...)->group('...')->buildSql(); $e = $m_acc->field('... as a,...')->where(...)->group('...')->union([$a,$b,$c,$d])->buildSql(); //到这里,已经可以把$e当做一个正常表来进行操作了,什么分页、group by、where随便用,使用"DB::table($e . ' a')"即可 $res = Db::table($e.' a') ->field('...') ->group('...') ->paginate(5); return json($res);
上面我是根据一个表里字段的不同分出了几个表然后union在一起的,当然也可以使用不同的表来操作,但需要注意的是一定要保证union的几个表必须具有相同的字段,这个使用filed方法保证一致性即可
这里用到了thinkphp5的union和子查询(buildSql()),不懂的查手册搜索这几个关键字即可,怎么感觉似乎比laravel还要简单一些呢~