Yii2 分页功能是否运行查询两次

Yii2 分页功能是否运行查询两次,yii2,Yii2,嗨,我是YII的新手,现在正在学习用户指南。。在下一个示例中,当我调用 $query = Country::find(); 它从表中获取所有数据,对吗?现在当我在这之后使用: $countries = $query->orderBy('name') ->offset($pagination->offset) ->limit($pagination->limit) ->all(); 它

嗨,我是YII的新手,现在正在学习用户指南。。在下一个示例中,当我调用

$query = Country::find(); 
它从表中获取所有数据,对吗?现在当我在这之后使用:

$countries = $query->orderBy('name')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();
它只是对第一个查询的结果排序,还是运行一个新查询?该查询在此代码中运行一次还是两次

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;

class CountryController extends Controller
{
    public function actionIndex()
    {
        $query = Country::find();

        $pagination = new Pagination([
            'defaultPageSize' => 5,
            'totalCount' => $query->count(),
        ]);

        $countries = $query->orderBy('name')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return $this->render('index', [
            'countries' => $countries,
            'pagination' => $pagination,
        ]);
    }
}

第一个查询是调用$query->count,就可以了

SELECT COUNT(*) FROM `country`
第二个是当您调用$query->…->all时,将执行以下操作

SELECT * FROM `country` LIMIT 0, 20

启用查询探查器以准确查看正在进行的操作