Pagination Yii2关于工会的分页问题

Pagination Yii2关于工会的分页问题,pagination,yii2,Pagination,Yii2,我试图在两个查询合并后使用分页,分页似乎不起作用。然而,如果我尝试在没有联合的情况下进行一次查询,它就会工作。 以下是查询。请帮助 //First Query $first_second = $this->find()->select($strcolumn.', p.featured_name')->from(MYDIRECTORY::tableName().' j')->join('INNER JOIN' ,MYDIRECTORYFEATUREDCLASS::table

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

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

您可以使用数据提供者

<?php


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



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

  ]);

?>

我也遇到了同样的问题,但除此之外,我还必须使用ActiveDataProvider。为了实现这一目标,我必须做到以下几点:

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

希望这对某人有所帮助:)

@BorahAnurup谢谢……如果我的答案正确,请将其标记为已接受,并将其评级为有用
    $joinedQuery = $first_second->union($second_list);
    $dirQuery = MYDIRECTORY::find()->from(['directories' => $joinedQuery]);
    $provider = new ActiveDataProvider([
            'query' => $dirQuery,
        ]);