Задать вопрос
@akula22

Много OR и AND в запросе ActiveRecord?

В таблице matches есть поля user1, user2, score1, score2 и tour_id
сюда записываются игры.

юзер может быть и user1 и user2 в зависимости от того где игра, дома или в гостях

мне надо получить общий счет юзера 1 и общий счет юзера 2 нужного турнира, чтобы сравнить и определить кто победил.

придумал вот такой запрос
$score1 = Matches::find()->asArray()->where(['tour_id' => $matche->tour_id, 'part' => $part])->andWhere(['user1' => $matche->user1, 'user2' => $matche->user2])->orWhere(['user1' => $matche->user2, 'user2' => $matche->user1])->sum('score1');


вроде как получаю счет игрока 1, но мне надо получить и второй счет и не уверен что правильно составил запрос, помогите с запросом? может можно все сделать одним запросом?
  • Вопрос задан
  • 318 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя akula22 К ответам на вопрос (3)
@akula22 Автор вопроса
Подскажите как еще взять из таблицы данные, где значение part максимальное?
что-то типа этого
$part = TourPlayoff::find()
            ->where(['tour_id' => $this->tour_id, 'user_id' => [$model->user1, $model->user2]])
            ->asArray()
            ->select([new Expression('max(part) part'), new Expression('team_id')])
            ->all();

выводит только одну запись, а их две!
Ответ написан
Комментировать