Yii2 Соответствие всем значениям в предложении IN

Я пытаюсь получить запрос, который соответствует всем значениям в предложении IN. Вот что у меня сейчас есть в модели UsersSearch.php:

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

Но он получает записи, соответствующие хотя бы одному из значений... Как я могу задать это условие andWhere для соответствия всем значениям, а не некоторым из них?

1 ответ

Решение

Это может быть что-то похожее на:

$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.

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;
  ?>
Другие вопросы по тегам