Как в Yii2 организовать связь через таблицу с условиями?
В общем сам запрос выглядит так
SELECT * FROM `vk_users` WHERE `user_id` = 24 AND `chat_bot_clients_id` in (SELECT `id` from `chat_bot_clients` where `chat_bot_user_id` = 1)
user_id - это ID модели, которая имеет связь hasMany с vk_users
chat_bot_user_id - это ID текущего пользователя
Да, работает, что-то типо того получилось, не знаю насколько это корректно или правильно:
public function getMyVkUsers() {
$subQuery = ChatBotClients::find()
->select('id')
->where(['chat_bot_user_id' => Yii::$app->user->id]);
return $this->hasMany(VkUsers::class,['user_id' => 'id'])->onCondition(['chat_bot_clients_id' => $subQuery]);
}
Просто запутался какой вариант выбрать, на выбор были:
1. При создании записи VkUsers сразу и ID юзера заносить туда и просто по нему сразу брать потом
2. Составить функцию hasMany с использованием viaTable (не очень то получилось), так и не понял как
3. Использовать join запрос. Каждый раз когда с ним не часто сталкиваюсь приходится все как будто заново изучать и каждый раз мозг ломается.
4. Использовать вложенный запрос. Не знаю насколько это хорошо с точки зрения производительности