Есть три таблицы t1, t2, t3. Также есть объединительная таблица t123, в которой хранятся связи трех таблиц.
Нужно вытащить все записи из t3, которые соответствуют одной определенной записи в t1 и одной или нескольким записям из t2.
В t123 записи хранятся в виде:
id t1 t2 t3
1 1 1 1
2 1 2 2
3 1 2 3
4 1 3 1
Получается только
t123::find()->joinWith('t3')
->select('t3.id')
->where([
't123.t1' => $t1,
])->andWhere('in','t2',$t2arr)->column();
В указанном примере при t1 =1, t2arr = [2,3] это дает массив [2,3,1], а нужно что выдавался пустой массив, потому что записей в t3, соответствующих и 2 и 3 нет.