Yii2匹配IN子句中的所有值

时间:2016-03-04 13:59:23

标签: mysql yii2

我试图获得一个匹配IN子句中所有值的查询。这就是我现在在UsersSearch.php模型中所拥有的:

    $categoryIdsMatching = UsersCategoriesAssn::find()
        ->select('userID')
        ->distinct(true)
        ->joinWith('userCategory')
            ->andWhere(['IN', 'usersCategories.id', $this->catNameSearch])
        ->column();
    $query->andWhere(['userID'=>$categoryIdsMatching]);

但它获取的记录至少与其中一个值相匹配...如何设置andWhere子句以匹配所有值而不是其中一些值?

2 个答案:

答案 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;
  ?>