@ukoHka
Всего понемногу

Как искать по нескольким тегам в Yii2 ActiveQuery?

Есть три таблицы 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 нет.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
proudmore
@proudmore
Могу быть не прав, но, вероятно, проблема в том, что joinWith по дефолту делает LEFT JOIN, а вам нужен InnerJoinWith()
www.yiiframework.com/doc-2.0/yii-db-activequery.ht...
PS. А вообще, мне кажется, что у вас не совсем верно устроена структура базы. Не раскроете названия таблиц?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы