у меня есть две таблицы в базе данных, а именно «пользователь» и «user_user», которая связывает пользователей для пользователей (многие ко многим)Yii2 условно объединить на двух внешних ключей в одной таблице
в user_user есть две колонки " user_id_0 "и" user_id_1 "
Мне нужно получить всех пользователей, где текущий идентификатор пользователя равен user_id_0 ИЛИ user_id_1.
я могу добиться этого с помощью SQL:
select * from user u
inner join user_user uu
on uu. user_id_0 = u.id
or uu.user_id_1 = u.id
[where u.id = 1]
В Yii2 я застрял с чем-то вроде этого:
($ это будет тип пользователя)
$this->hasMany(User::className(), ['id' => 'user_id_0'])
->viaTable('user_user', ['user_id_0' => 'id'],
function($query) {
$query->orOnCondition(['user_id_1' => 'id']);
});
Теперь это не может работать, поскольку hasMany() ссылается только на один внешний ключ. Как мне сделать что-то вроде SQL выше? Присоединить два внешних ключа с помощью «или».
Это возможно или вы бы предложили другой дизайн базы данных? Цель здесь состоит в том, чтобы позволить пользователям иметь «друзей» или «подключения» к другим пользователям, например, в социальной сети.
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#working-with-relational-data – ankitr
Что делает этот запрос sql? Это для MySQL? – robsch