azovl
@azovl

Как работать со связанными таблицами в Yii2?

Я имею таблицы:

User

(id, name, surname)

и

UserContacts

(u_id1, u_id2).

В моделе экшен:
(Не работает)

return $this->hasMany(User::className(), ['id' => 'u_id1', 'id' => 'u_id2'])
->viaTable('UserContacts', ['id' => 'u_id1', 'id' => 'u_id2']);

Подскажите как я могу получить свзанную таблицу, где каждому u_id1 = id(из таблицы User), u_id2 = id(из таблицы User), с помощью одного запроса используя viaTable ()?
И затем получить все данные.
  • Вопрос задан
  • 2653 просмотра
Пригласить эксперта
Ответы на вопрос 3
public function getAttrs()
    {
        return $this
            ->hasMany(Profile::className(), ['user_id' => 'id'])
            ->where('name = "name"')->union(
                $this->hasMany(Profile::className(), ['user_id' => 'id'])->where('name = "surname"')
            );
    }


вот такой вариант рабочий.

return $this->hasMany(User::className(), ['id' => 'u_id1'])
->viaTable('UserContacts', ['id' => 'u_id1'])->union($this->hasMany(User::className(), ['id' => 'u_id2'])
->viaTable('UserContacts', ['id' => 'u_id2']));

примерно так.
Ответ написан
Комментировать
azovl
@azovl Автор вопроса
return $this->hasMany(User::className(), ['id' => 'u_id2'])
->viaTable(UserContact::tableName(), ['u_id1' => 'id']);


Единственно, остался вопрос как добавиль условие 'where' в viaTable. Тоесть необходимо найти к примеру с type = 1, только в таблице UserContact?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы