在Yii2 RESTful API上按其他字段过滤

时间:2015-07-10 13:27:47

标签: php rest yii yii2

首先抱歉英语不好!

我正在测试YII2中的RESTful API,并且在official guide之后创建它非常容易。但默认情况下(据我所知)我只能将 id 作为参数传递给特定记录。

例如,假设我有下表名为 person
id, name, age, gender, email, phone

在这种情况下,我只能按ID过滤,如下所示:http://myserver/api/persons/1

我需要知道如何根据其他字段进行过滤,例如年龄性别

我的控制器:

class PersonController extends ActiveController
{
    public $modelClass = 'app\models\Person';
}

谢谢!

1 个答案:

答案 0 :(得分:4)

ActiveController 类中实现的默认 IndexAction 返回的 ActiveDataProvider 实例不支持按属性过滤:< / p>

app / vendor / yiisoft / yii2 / rest / IndexAction.php:

(...)

protected function prepareDataProvider()
{
    (...)

    return new ActiveDataProvider([
        'query' => $modelClass::find(),
    ]);
}

您需要使用自定义代码覆盖它。这是一个示例,它被 gii 返回的 ActiveDataProvider 实例覆盖了搜索模型类:{{3 }}