我试图获得一个匹配IN子句中所有值的查询。这就是我现在在UsersSearch.php模型中所拥有的:
$categoryIdsMatching = UsersCategoriesAssn::find()
->select('userID')
->distinct(true)
->joinWith('userCategory')
->andWhere(['IN', 'usersCategories.id', $this->catNameSearch])
->column();
$query->andWhere(['userID'=>$categoryIdsMatching]);
但它获取的记录至少与其中一个值相匹配...如何设置andWhere子句以匹配所有值而不是其中一些值?
答案 0 :(得分:0)
这可能类似于:
$categoryIdsMatching = UsersCategoriesAssn::find()
->select('userID')
->distinct(true)
->joinWith('userCategory')
->andWhere(['IN', 'usersCategories.id', $this->catNameSearch])
->groupBy('userTable.userID')
->having('COUNT(userTable.userID) ='.count($this->catNameSearch));
可能没有其他方法来过滤IN运算符以匹配MySQL中的所有值。
答案 1 :(得分:0)
Yii2其中的子句
型号:
//GET MULTIPLE AREA
public function getAreaSelected() {
//GET SAVE COMMA SEPERARED VALUE CONVERT IN TO ARRAY
$areaArray = explode(",", $this->attributes['selected_area']);
$query = AreaMaster::find()->where(['IN', 'id', $areaArray])->all();
return $query; //$this->hasMany(AreaMaster::className(), ['IN', 'id', $pks]);
}
查看文件:
<?php
print '<pre>';
print_r($model->areaSelected);
exit;
?>