无页面限制的Yii2宁静API

g0czyy6m  于 2022-11-09  发布在  其他
关注(0)|答案(4)|浏览(123)

我正在使用没有分页限制的yii\rest\ActiveController
我就是这么做的

<?php

namespace rest\modules\v1\controllers;

use yii\rest\ActiveController;

class CompanyController extends ActiveController
   {
   public $modelClass = 'frontend\models\TblDeliveredCompanies';

 }

上面只返回了20条记录,如何改进才能全部返回?

dldeef67

dldeef671#

您可以在控制器内重写prepareDataProvider(),以便从索引操作返回自定义数据提供器:

public function prepareDataProvider()
{
    $query = \frontend\models\TblDeliveredCompanies::find();
    $dataProvider = new \yii\data\ActiveDataProvider([
         'query' => $query,
         'pagination' => ['pageSize' => 0]
    ]);

    return $dataProvider;
}

请在www.example.com上查看文档http://www.yiiframework.com/doc-2.0/guide-rest-controllers.html#extending-active-controller

a0zr77ik

a0zr77ik2#

20的限制可能与dataProvider的默认分页值有关,因此在控制器/操作中或在创建$dataProvider的模型中,您应该重新定义函数,将分页指定为false

$dataProvider->pagination = false;

$dataProvider = new ActiveDataProvider([
   'query' => $your_query,
     'pagination' => false,
 ]);
z6psavjg

z6psavjg3#

检查'frontend\models\TblDeliveredCompanies'处存在的模型类'TblDeliveredCompanies'中的代码,它必须具有包含限制20的SQL查询,将其更改为'SELECT * from yourtbl where %yourcond%'

qoefvg9y

qoefvg9y4#

其他解决方案

public function actions()
{
    $actions = parent::actions();
    $actions['index']['pagination'] = false;
    return $actions;
}

相关问题