Yii2联合查询的自定义分页 [英] Yii2 custom paginaion for Union query

查看:212
本文介绍了Yii2联合查询的自定义分页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在Yii2中实现自定义分页.这是我的代码

I want to implement custom pagination in Yii2. this is my code

$connection = Yii::$app->getDb();
$name       =   $_GET['name'];
$query      =   '
                SELECT name FROM user WHERE name LIKE "%.'$name'.%"" 
            UNION
                SELECT name FROM user2 WHERE name LIKE "%.'$name'.%"" 
            UNION
                SELECT name FROM user3 WHERE name LIKE "%.'$name'.%"" 
            UNION
                SELECT name FROM user4 WHERE name LIKE "%.'$name'.%"" 
            ';              
$result      = $connection->createCommand($query)->queryAll();

请让我知道如何在Yii2中实现分页

Please let me know how can i implement pagination in Yii2

推荐答案

请尝试一下

$totalCount =   0;

$name       = $_GET['name'];
$connection = Yii::$app->getDb();
$limit      =   10;

$from       =   (isset($_GET['page'])) ? ($_GET['page']-1)*$limit : 0; // Match according to your query string

$sql        =   '
            SELECT name FROM user WHERE name LIKE "%.'$name'.%"" 
        UNION
            SELECT name FROM user2 WHERE name LIKE "%.'$name'.%"" 
        UNION
            SELECT name FROM user3 WHERE name LIKE "%.'$name'.%"" 
        UNION
            SELECT name FROM user4 WHERE name LIKE "%.'$name'.%"" 
        ';
$command = $connection->createCommand($sql.' LIMIT '.$from.','.$limit);

$count   = $connection->createCommand('SELECT COUNT(*) as total FROM ('.$sql.') a')->queryAll();

$result         = $command->queryAll();

$totalCount     =   $count[0]['total'];

$pages = new Pagination(['totalCount' => $totalCount, 'pageSize' => $limit]);       

这篇关于Yii2联合查询的自定义分页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆