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