ActiveQuery

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
ddmitrenko
Сообщения: 82
Зарегистрирован: 2015.02.04, 16:31

ActiveQuery

Сообщение ddmitrenko »

Добрый день.
Краткое описание задачи: Есть таблица билетов на матчи. В каждом билете есть команда-хозяин и команда-гость. Таблица команд ОДНА! Для связи используется

Код: Выделить всё

   public function getTeamOwner() {
        return $this->hasOne(Teams::className(), ['id' => 'id_team_owner']);
    }

    public function getTeamVisitor() {
        return $this->hasOne(Teams::className(), ['id' => 'id_team_visitor']);
    }
Запрос:

Код: Выделить всё

 Tickets::find()->joinWith(['teamVisitor','teamOwner'])->all();
В sql вижу

Код: Выделить всё

SELECT `tickets`.* FROM `tickets` LEFT JOIN `teams` ON `tickets`.`id_team_visitor` = `teams`.`id`
Нет связи по teamOwner. Это у меня глюки или какой-то баг?
С уважением, Дмитрий.
oklimm
Сообщения: 4
Зарегистрирован: 2022.09.01, 17:46

Re: ActiveQuery

Сообщение oklimm »

Попробуйте добавить alias'ы для таблиц

Код: Выделить всё

 Tickets::find()->joinWith(['teamVisitor tv','teamOwner to'])->all();
ddmitrenko
Сообщения: 82
Зарегистрирован: 2015.02.04, 16:31

Re: ActiveQuery

Сообщение ddmitrenko »

Помогло, но потянуло другие вопросы :(
Мое решение -

Код: Выделить всё

Tickets::find()->leftJoin(\common\models\Teams::tableName(),
                   'tickets.id_team_owner = teams.id OR tickets.id_team_visitor = teams.id' )->all()
С уважением, Дмитрий.
Закрыто