Php 如何更改默认的yii2restapi获取响应结果
根据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
\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);
}