【问题标题】:Yii2 Pagination Issue on UnionYii2关于Union的分页问题
【发布时间】:2016-06-23 07:46:03
【问题描述】:

我试图在两个查询合并后使用分页,分页似乎不起作用。但是,如果我尝试在没有联合的情况下进行一个查询,它会起作用。 以下是查询。请帮助。

//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
]);

使用如下分页时,分页似乎不起作用?任何帮助将不胜感激

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'
]);

【问题讨论】:

    标签: pagination yii2


    【解决方案1】:

    你可以使用 dataProvider

    <?php
    
    
      $joinedquerys=$first_second->union($second_list);
    
    
    
      $dataProvider = new SqlDataProvider([
        'sql' => $joinedquerys,
    
      ]);
    
    ?>
    

    【讨论】:

    • @BorahAnurup 谢谢..如果我的回答是正确的,请将其标记为已接受并评价为有用
    【解决方案2】:

    我遇到了同样的问题,但另外我必须使用 ActiveDataProvider。为此,我必须执行以下操作:

        $joinedQuery = $first_second->union($second_list);
        $dirQuery = MYDIRECTORY::find()->from(['directories' => $joinedQuery]);
        $provider = new ActiveDataProvider([
                'query' => $dirQuery,
            ]); 
    

    希望这可以帮助某人:)

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      相关资源
      最近更新 更多