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