Хочу получить все IDs не связанных записей. Например у меня есть 3 таблицы:
И есть раздел Каталог, в котором можно подключить нужный модуль. В каталоге есть 2 блока:
По началу все модули находятся в блоке Доступные модули, как только пользователь подключил его, он должен скрыться из этого блока и перейти в блок Сейчас подключено.
Мне нужно сделать это средствами Yii2 ORM. Если написать чистый SQL, то получится так
SELECT m.id FROM
`modules` as m
inner join `user_modules` as um on um.id_module = m.id
inner join `users` as us on um.id_user = us.id
Чтобы получить подключенные модули пользователя, можно создать реляцию с использованием промежуточной таблицы.
public function getModulesEnable()
{
return $this->hasMany(Modules::class, ['id' => 'id_user'])
->viaTable('user_modules', ['id_module' => 'id']);
}
Чтобы получить отключенные модули, используем обычный запрос, но исключаем подключенные модули. Для этого получаем айдишники подключенных модулей и сохраняем их в свойстве $this->enableModulesIds. Либо передаем параметром, чтобы было более очевидно.
public function getModulesDisable(){
return Modules::find()->where(['!=', 'id', $this->enableModulesIds])->all();
}
Продвижение своими сайтами как стратегия роста и независимости