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
?