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还要简单一些呢~

发表回复

您的电子邮箱地址不会被公开。