[英]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.