Yii2:如何编写下面的活动查询?

Yii2:如何编写下面的活动查询?,yii2,yii2-model,Yii2,Yii2 Model,使用,如何将我的$conditions变量获取到活动查询中 $conditions = 'main_category_id != :main_category_id', ['category_status' => 1, 'main_category_id' => 0, 'sub_category_id' => $id,'type'=> 4]; $result = Category::find()->where($conditions)->orderby('c

使用,如何将我的
$conditions
变量获取到活动查询中

$conditions = 'main_category_id != :main_category_id', ['category_status' => 1, 'main_category_id' => 0, 'sub_category_id' => $id,'type'=> 4];

$result = Category::find()->where($conditions)->orderby('category_name ASC')->all();
在我的查询
main\u category\u id!=0
。任何其他有效的解决方案也可以

请注意,我需要
$conditions
变量,因为它们不同。以下是我对if语句的查询:

    public function get_subcategory_list($id="",$type="")
{
    $conditions = ['category_status' => 1, 'main_category_id' => 0, 'main_category_id' => $id, 'type' => 2];
    if($type == 2){
        $conditions = ['category_status' => 1, 'main_category_id' => 0, 'sub_category_id' => $id, 'type' => 3];
    }
    if($type == 3){
        $conditions = ['category_status' => 1, 'main_category_id' => 0, 'sub_category_id' => $id,'type'=> 4];
    }
    $result = Category::find()->where($conditions)->orderby('category_name ASC')->all();
    return $result;
}
请注意,
$conditions
在上述函数上运行良好唯一的问题是这里的
main\u category\u id
不应等于0。

您不能像以前那样分配变量(
$conditions
),它无效

您的
ActiveQuery
可以这样编写:

$models = Category::find()
    ->where(['<>', 'main_category_id', 0])
    ->andWhere([
        'category_status' => 1,
        'sub_category_id' => $subCategoryId,
        'type'=> 4,
    ])
    ->orderBy(['category_name' => SORT_DESC])
    ->all();
switch ($type) {
    case 2:
        $typeValue = 3;

        break;
    case 3:
        $typeValue = 4;

        break;
    default:
        $typeValue = 2;
}
这个逻辑有点奇怪(也许增量+1会更好)

然后只需在此处插入
$typeValue
而不是静态值
'type'=>$typeValue


即使您有一些复杂的查询构造,您也可以将查询划分为单独的
where
/
或where
/
和where
并动态更改它。

我的条件不同,所以我需要分配一个变量。这样做的方法是什么?正如您所说,我知道如何使用
ActiveQuery
,但我需要我的
$conditions
根据不同的情况进行更改。请提供有关如何更改的更多详细信息。我有,还请注意,分配变量
$conditions
是完全有效的。不是您最初编写它的方式(用逗号)。正确,我最初写它时有错误,以显示我需要实现的目标。在第一个条件赋值中-
“main\u category\u id”=>0,“main\u category\u id”=>$id
。是打字错误吗?它不应该是
'main\u category\u id'=>0,'sub\u category\u id'=>$id