首先抱歉英语不好!
我正在测试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';
}
谢谢!
答案 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 }}