首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >联合上的Yii2分页问题

问联合上的Yii2分页问题
EN

Stack Overflow用户
提问于 2016-06-23 07:46:03
回答 2查看 700关注 0票数 2

我试图使用分页后,结合两个查询,分页似乎不起作用。但是,如果我试图在没有联合的情况下进行一次查询,它就会工作。下面是queries.Please帮助。

代码语言:javascript
复制
//First Query
$first_second = $this->find()->select($strcolumn.', p.featured_name')->from(MYDIRECTORY::tableName().' j')->join('INNER JOIN' ,MYDIRECTORYFEATUREDCLASS::tableName().' p', 'p.featurer_id = j.listdetails_featured_frid')->where(['listdetails_list_frid' => $id['list_id']])->andWhere(['<=', 'listdetails_featured_frid', 2])->andWhere(['listdetails_list_flag' => MYDIRECTORYCLASS::STATUS_ACTIVE])->orderBy(['listdetails_featured_frid'=>SORT_ASC,'listdetails_list_pos'=>new Expression('rand()')]);

 //Second Query
$second_list =  $this->find()->select($strcolumn.', p.featured_name')->from(MYDIRECTORYCLASS::tableName().' j')->join('INNER JOIN' ,MYDIRECTORYFEATUREDCLASS::tableName().' p', 'p.featurer_id = j.listdetails_featured_frid')->where(['listdetails_list_frid' => $id['list_id']])->andWhere(['>', 'listdetails_featured_frid', 2])->andWhere(['listdetails_list_flag' => MYDIRECTORYCLASS::STATUS_ACTIVE])->orderBy(['listdetails_featured_frid'=>SORT_ASC,'listdetails_list_medname'=>SORT_ASC]);


//Joined Union Query
$joinedquerys=$first_second->union($second_list);

$countQuery = clone $joinedquerys;

$pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => \Yii::$app->params['pagination_limit'],'defaultPageSize' => \Yii::$app->params['pagination_limit'],'forcePageParam' => false,'params' => ['page' => \Yii::$app->request->get('page', 1)] ]);

$resultArray = $joinedquerys->offset($pages->offset)->limit($pages->limit)->asArray()->all();


return $this->render('listing', [
            "mylisting" =>  $resultArray,
            "pagination" => $pages
]);

如下图所示,使用分页时,分页似乎不起作用?如果有任何帮助,我们将不胜感激。

代码语言:javascript
复制
echo LinkPager::widget([
                    'pagination' => $pagination,
                    'options' => ['class' => 'paginate pag2 clearfix'],
                    'registerLinkTags' => true,
                    'prevPageLabel' => \YII::$app->params['linker_page_btn_prev'],
                    'nextPageLabel' => \YII::$app->params['linker_page_btn_next'],
                    'maxButtonCount' => \YII::$app->params['linker_page_btn_count'],
                    'activePageCssClass' => 'current',
                     'nextPageCssClass' => 'next'
]);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-23 07:56:47

你可以用dataProvider

代码语言:javascript
复制
<?php


  $joinedquerys=$first_second->union($second_list);



  $dataProvider = new SqlDataProvider([
    'sql' => $joinedquerys,

  ]);

?>
票数 2
EN

Stack Overflow用户

发布于 2018-04-01 09:34:00

我也有同样的问题,但是我还必须使用ActiveDataProvider.为了实现这一点,我必须做以下工作:

代码语言:javascript
复制
    $joinedQuery = $first_second->union($second_list);
    $dirQuery = MYDIRECTORY::find()->from(['directories' => $joinedQuery]);
    $provider = new ActiveDataProvider([
            'query' => $dirQuery,
        ]); 

希望这对某人有帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37985257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档