Ситуация такова:
Реализовую функционал "друзей" для пользователей.
Я имею 2 таблицы User, UserContact.
User
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UserContact
`u_id1` int(11) NOT NULL,
`u_id2` int(11) NOT NULL,
PRIMARY KEY (`u_id1`,`u_id2`),
KEY `fk_user_contact_user_2` (`u_id2`)
Тоесть каждый пользователь, имеет множество друзей, точно также как и другие пользователи имеют множество друзей, связь многие к многим.
Как описать данную свзяь в Yii2?
На данный момент использую данный код, но он не правильный, поскольку поиск идет только по u_id2.
return $this->hasMany(User::className(), ['id' => 'u_id2'])->viaTable(
UserContact::tableName(),
['u_id1' => 'id'],
function ($query) use ($status) {
$query->where(['status' => $status]);
}
);
К примеру:
u_id1 = 1, u_id2 = 2, status = 0
Связь находит, но когда другой пользователь( c u_id2) заходит и начинает искать, по данному запросу, то ничего не находит поскольку ищет в u_id1 свой идентификатор.
Необходимо чтобы как u_id1 так и u_id2 могли найти себя в записи:
u_id1 = 1, u_id2 = 2, status = 0