如何在Yii2中使用RESTful模型和控制器过滤记录

Dub*_*bby 1 php rest yii yii2

我正在使用Yii2创建RESTful API,并已按照快速入门教程*成功设置了名为Contacts的模型。我喜欢如何在不创建任何动作的情况下创建,列出,更新和删除记录。

但是我看不到如何过滤结果。我只想返回contact.user_id等于1的联系人(例如),因为它当前将回复所有记录。不创建动作就可以吗?

我也不确定如何限制结果。从我看过的内容来看,我觉得应该在URI后面加上?limit = 5。

Bli*_*izz 5

您应该返回一个数据提供程序,而不是一组支持分页的对象。也许这种方法会更有用:

public function actionIndex() 
{
   return new \yii\data\ActiveDataProvider([
        'query' => Contact::find()->where(['user_id' => \Yii::$app->user-id]),
   ]);
}
Run Code Online (Sandbox Code Playgroud)

您也可以保持index操作不变,但为预设操作提供prepareDataProvider-callback:

public function actions()
{
    $actions = parent::actions();
    $actions['index']['prepareDataProvider'] = function($action) 
    {
        return new \yii\data\ActiveDataProvider([
           'query' => Contact::find()->where(['user_id' => \Yii::$app->user-id]),
        ]);
    };

    return $actions;
}
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助。