繁体   English   中英

yii2多重过滤器进入搜索模型

[英]yii2 multiple filter into search model

我有这样的数据库结构:

Addresses
id primary key auto_increment
name
surname
email

categories
id primary key auto_increment
name

address_category
id primary key auto_increment
addr_id
cate_id

在gridview上的类别过滤器列中,我插入了一个select2扩展名并将其多个设置为true,在addressesSearch模型中我添加了以下代码:

->andFilterWhere(['address_category.cate_id'=>  $category]

它的功能,但不像我想要的那样,yii进行类似cate_id IN(4,5,6)的IN查询,而不是我需要一个查询,该查询查找带有所有选定类别标记的地址。

我希望能很好地解释我的问题

谢谢

select2多个返回逗号分隔的值。 首先将其拆分,也许检查整数值

->andFilterWhere(['IN', 'address_category.cate_id', array_map('intval', explode(',', $category))]);

我找到了一个解决方案,我不知道这是否是最好的方法,但是可行。

                $query->select(['addresses.*, (select count(*) as categories from address_category where cate_id IN ('.implode(",",$category).') and addr_id=addresses.id) as categories']);
            $query->having(['categories' =>  count($category)]);        

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM