Yii2 API Rest查询参数或条件

4a寿命

我正在使用Yii2开发API REST应用程序,但我遇到以下查询问题:

我收到带有两个参数的urlget请求

http://localhost/yii2/rest/web/index.php/v1/functions/search?name=test&code=int

我想在SQL查询中使用Or条件(而不是And条件)来处理get参数

我知道使用这种方式有效

$provider = new ActiveDataProvider([
    'query' => $model->find()->select('idFunction')->where(['or',['name'=>'test'],['code'=>'int']]),
    'pagination' => false
]);

但是这种方式无效它表现为与条件:

$provider = new ActiveDataProvider([
    'query' => $model->find()->select('idFunction')->where(['or',$params]),
    'pagination' => false
]);

我认为它必须完成变量$params转换的方式。

这是我的整个代码:

public function actionSearch()
{
    $params = \Yii::$app->request->queryParams;
    exit(print_r($params));
    if (!empty($params)) {
        $model = new $this->modelClass;
        foreach ($params as $key => $value) {
            if (!$model->hasAttribute($key)) {
                throw new \yii\web\HttpException(404, 'Invalid attribute:' . $key);
            }
        }
        try {
            $provider = new ActiveDataProvider([
                    'query' => $model->find()->select('idFunction')->where(['or',$params]),

                'pagination' => false
            ]);
        } catch (Exception $ex) {
            throw new \yii\web\HttpException(500, 'Internal server error');
        }

        if ($provider->getCount() <= 0) {
            throw new \yii\web\HttpException(404, 'No entries found with this query string');
        } else {
            return $provider;
        }
    } else {
        throw new \yii\web\HttpException(400, 'There are no query string');
    }
}    
劳尔·索科(Raul Sauco)

您可以遍历参数数组以对其进行修改。

使用array_unshift($conditions, 'or')我在评论建议的方式无效该方法需要一个数组,其中每个元素(除了操作数本身之外)本身就是一个只有一个元素的数组。

Yii2运算符格式文档

我刚刚试过了一些可行的方法,但它不是很漂亮,它可以遍历元素并返回期望形式的数组。

$orQuery = ['or'];
foreach ($params as $key => $value) {
   $orQuery[] = [$key => $value];
}
$query->where($orQuery);

这将返回该query()方法期望的数组

['or', ['name1' => 'value1'], ['name2' => 'value2'], ...]

产生SQL:

SELECT * FROM table WHERE ('name1'='value1') OR ('name2'='value2')...;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Yii2 REST API Codeception问题

来自分类Dev

Yii2 Rest API重写规则

来自分类Dev

Yii2 REST API关系数据返回

来自分类Dev

在localhost(php / yii2)上测试Twitter REST API

来自分类Dev

yii2创建基于定制的Rest API

来自分类Dev

REST API调用以在Yii2上登录

来自分类Dev

Yii2 REST API按字段查找

来自分类Dev

Yii2 REST API未返回预期结果

来自分类Dev

yii2 rest api中模型的不同文件

来自分类Dev

Yii2 Rest Api自定义错误响应

来自分类Dev

YII2 Rest API URL调用模型方法

来自分类Dev

Yii2 Rest API承载身份验证

来自分类Dev

yii2自定义REST API问题

来自分类Dev

yii2创建基于定制的Rest API

来自分类Dev

Yii2 Rest Api自定义错误响应

来自分类Dev

Yii2 REST API复数无法正常工作

来自分类Dev

Yii2 REST API关系数据返回

来自分类Dev

Yii2 Rest Api用户承载认证到期时间

来自分类Dev

Yii2 rest api 与承载身份验证

来自分类Dev

Yii2 REST查询

来自分类Dev

Yii2限速API

来自分类Dev

Retrofit2 + YII2 Rest API(org.xmlpull.v1.XmlPullParserException:意外令牌)

来自分类Dev

Yii2 Rest API带有多个控制器的额外模式

来自分类Dev

在默认Rest API中对数据进行排序-Yii2框架

来自分类Dev

在Yii2 REST API中一起使用JSON和JSONP格式

来自分类Dev

在Yii2 Rest API中创建自定义操作

来自分类Dev

Yii2在模型中使用控制器中的方法(REST API)

来自分类Dev

在Yii2 Rest API中创建自定义操作

来自分类Dev

Yii2 Rest API基本身份验证无效凭证