본문 바로가기
MySql

MySQL 제한 및 페이지 매김이있는 yii CActiveDataProvider

by 베이스 공부 2020. 10. 25.
반응형

표에서 몇 개의 행을 선택하고 여러 페이지 (페이지 매김)로 렌더링하려고합니다. 다음은 모델의 코드입니다.

   return new CActiveDataProvider('Downloads',
        array(
            'criteria' => array(
                'select' => 'download_id,title,thumb_ext',
                'order' => 'download_id DESC',
                'limit' => $count,
            ),
            'pagination' => array('pageSize' => 5,),
        )
    );

보기에서 CGridView를 사용하여 표시합니다.

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'columns' => array('download_id', 'title', 'thumb_ext'),
    ));

문제는 CActiveDataProvider가 기준 제한을 무시하고 테이블의 모든 행을 반환한다는 것입니다.

감사.

 

해결 방법

 

나는 긍정적이지 않지만 Yii는 LIMIT 절을 사용하여 SQL 결과 페이지 매김을 수행하므로 LIMIT 절을 덮어 쓰거나 대체합니다. CWebLogRoute 로그 경로를 켜서 정확히 어떤 SQL이 실행되고 있는지 확인할 수 있습니다.

어쨌든 이것이 어떻게 작동해야하는지 잘 모르겠습니다. 추가 한 LIMIT 절은 무엇입니까? 어쨌든 페이지를 매기는 경우 사용자가 모든 레코드를 통해 페이지를 매기는 것은 어떻습니까? 해결 방법은 기준을 변경하여 LIMIT 절을 제거하는 것입니다.

페이지 당 결과 수를 설정하려고합니까? 이미 pageSize를 5로 설정했습니다 ...

원하는 작업을 수행 할 수있는 또 다른 방법은 기본 Pager 클래스 인 CPagination을 확인하는 것입니다. CLinkPager를 사용하면 CGridView에서 사용하는 CListPager보다 더 창의적으로 페이지를 매길 수 있습니다.

행운을 빕니다!

 

참조 페이지 https://stackoverflow.com/questions/4561666

 

 

반응형

댓글