yii 使用 ActiveDataFilter 传递参数进行搜索,不想用json,想搜索多个状态,使用in查询的话,如何传递参数

 $filter = new ActiveDataFilter([
            'searchModel' => 'custom\appointment\models\Appointment'
        ]);
        $filter->filterAttributeName = 'q';
        $filterCondition = null;

        if ($filter->load(\Yii::$app->request->get())) {
//            \X::result($filter);die;
            $filterCondition = $filter->build(false);

            if ($filterCondition === false) {
                return $filter;
            }
        }

这么设置的,路径直接传q[status]=SUCCESS,这样可以直接搜索到status为SUCCESS状态的,想加in查询或者or查询,不想用json参数,如何传递参数,qstatus = [EXPIRE,CANCEL],这样不可以,具体应该怎么传

阅读 2k
1 个回答

1.如果使用params 传参数的,使用in查询的话,可以这么传参数

q[status][in][]=EXPIRE&q[status][in][]=CANCEL

会生成下面的sql条件

`status` IN ('EXPIRE', 'CANCEL')

管理端使用

Yii::$app->request->get()

接收参数

2.如果传json的话,使用in查询的话,可以这么传参数

{
    "q": {
        "status": {"in": ["EXPIRE","CANCEL"]}
    }
}

会生成下面的sql条件

`status` IN ('EXPIRE', 'CANCEL')

管理端使用

Yii::$app->request->getBodyParams()

接收参数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题