VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Как правильно сформировать запрос в базу данных yii2?

Добрый день!

Есть три таблицы:
63103cd9799da065329255.png
Каждому пользователю присвоены статусы, статусов у каждого может быть несколько, как мне получить пользователя, у которого, например, нет статуса под id = 1?

В данном случае это должен быть Петя

Сразу говорю, что такой метод не дает результатов:
$users = Users::find()
    ->joinWith('userStatuses')
    ->where(['not in', UserStatuses::tableName().'.status_id', [1]])
    ->all();
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Aldifor
Попробуй сначала подключить таблицу userStatuses join' ном по user_id
после добавь свое условие
$users = Users::find()
            ->joinWith(['userStatuses' => function (ActiveQuery $query) {
                return $query
                    ->andWhere([UserStatuses::tableName(). ' .user_id' => Users::tableName() . '.id']);
            }])
            ->andWhere(['not in', UserStatuses::tableName().'.status_id', [1]])
 //->andWhere(['not', ['in',  UserStatuses::tableName().'.status_id', [1]]])
            ->all();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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