웹 응용 프로그램에서 페이지 매김을 실행 가능하게하려고합니다. 하지만 그것은 totalCount 속성에 정확한 번호를 부여하지 않는 것 같습니다. 그때는 나에게 행 오른쪽 번호를주고() findBySql와 객체를 사용하지만 행의 수 $ 페이지 ->에서는 totalCount 값과 일치하지 않는 경우 내 코드는 위의 코드에서Yii 2 페이지 매김이 제대로 작동하지 않습니다.
$find_query = "SELECT * FROM business WHERE status='Enabled' ";
$query = Business::findBySql($find_query);
//$query = Business::find()->where(['status' => 'Enabled']);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count(), 'defaultPageSize' => 10]);
$data_rows = $query->offset($pages->offset)
->limit($pages->limit)
->all();
을 인걸요. 실제 결과 행 번호와 다른 번호를 부여하는 totalCount.
find()로 주석 처리 된 객체를 사용하는 경우 $ pages-> totalCount 및 $ data_rows에 동일한 행 번호가 부여됩니다.
findBySql()이 예상대로 작동하는지 확인하려면 여기를 업데이트해야합니까?
내 SQL은 다중 조인 작업이 포함 된 약간의 복잡하기 때문에 findBySql()을 사용해야합니다.
사전 감사 ..이
$find_query = "SELECT * FROM business WHERE status='Enabled' ";
$query = Business::findBySql($find_query);
//$query = Business::find()->where(['status' => 'Enabled']);
$countQuery = count($query->all());
$pages = new Pagination(['totalCount' => $countQuery, 'defaultPageSize' => 10]);
$data_rows = $query->offset($pages->offset)
->limit($pages->limit)
->all();
감사합니다. 예, 이미 그런 식으로 시도했습니다. 하지만 내 질문은 totalCount가 $ pages = new Pagination ([ 'totalCount'=> $ countQuery-> count(), 'defaultPageSize'=> 10])에서 정확한 숫자를 제공하지 않는 이유입니다. – user3273871
@ user3273871 내 대답을 편집했습니다 –
$ query = Business :: findBySql ($ find_query);를 사용하여 페이지 매김이 작동하지 않습니다. – user3273871