Php 如何更改默认的yii2restapi获取响应结果

Php 如何更改默认的yii2restapi获取响应结果,php,rest,yii,Php,Rest,Yii,根据yii2restapi文档,我有一个扩展了\Yii\Rest\ActiveController的countriescontry和相应的国家/地区模型。这是我的控制器类的代码 <?php namespace app\controllers; class CountriesController extends \yii\rest\ActiveController{ public $modelClass = 'app\models\Countries'; public functio

根据yii2restapi文档,我有一个扩展了
\Yii\Rest\ActiveController
countriescontry
和相应的
国家/地区模型。这是我的控制器类的代码

<?php

namespace app\controllers;

class CountriesController extends \yii\rest\ActiveController{

public $modelClass = 'app\models\Countries';

public function actionIndex(){

}

public function actionView(){

}

public function actionCreate(){

}

public function actionUpdate(){

}

public function actionDelete(){

}

public function actionOptions(){

}

}

我知道我可以通过数据库获取所有国家的数据,并循环浏览,只获得20个结果,但我只想从数据库中查询20条记录。

直接

//SELECT * FROM countries LIMIT 20
$countries= Countries::find()->limit(20)->all();

假设您的api链接为:

http://localhost/yii2-rest/api/country/?limit=15&order=id
控制器:

 public function actionIndex(){
       $model = Countries::find()           
        ->orderBy($_GET['order'])
        ->limit($_GET['limit'])
        ->all();    
       return $model;
     }
注意安全

您可以通过以下方式获取查询字符串:

$limit = Yii::app()->getRequest()->getQuery('limit');

从\yii\rest\ActiveController扩展而来的类CountriesController自动支持GET、PUT、POST调用等。如果您只需要常规rest功能,则不需要actionIndex()、actionCreate()等。在报纸上读到它

要限制结果,您可以在控制器afterAction方法中设置另一个页面大小。将其添加到控制器中。(我相信20条记录是分页类的默认值,因此,如果这是您想要的,您根本不需要此代码。只需使用yii/rest/ActiveController的默认功能即可。)


。使用api链接设置限制,并将该限制输入控制器,然后$model=Countries::find()->limit($_get['limit]);在Yii2中删除了作用域。
$limit = Yii::app()->getRequest()->getQuery('limit');
public function afterAction($action, $result) {
    if (isset($result->pagination) && ($result->pagination !== false)) {
        $result->pagination->setPageSize(100);
    }
    return parent::afterAction($action, $result);
}