Вам надо что бы в searchModel приходил удобный массив, например
SomeModel[groups][9][1]
SomeModel[groups][9][2]
SomeModel[groups][12][3]
тогда простой перевор
foreach($SomeModel[groups] as $one){
$arr = ['or'];
foreach($one as $attr){
$arr[] = ['group_id' => $attr];
}
$query->andWhere($arr);
}
Это схематично, думаю система понятна
ПС. Мне кажется у Вас не верная структура БД. Не понимаю зачем attribut_id, если для декорации, то вероятно в input можно вывести просто id и не будет проблем, так как id уникален
Как вариант можно поиграться с конкатенацией, например:
SELECT * FROM MyMegaTable WHERE CONCAT(group_id, ".",attribut_id) = "2.1";