Yii2 получить id не связанных записей

132
13 февраля 2021, 18:30

Хочу получить все IDs не связанных записей. Например у меня есть 3 таблицы:

  1. пользователи
  2. модули
  3. модули_пользователя

И есть раздел Каталог, в котором можно подключить нужный модуль. В каталоге есть 2 блока:

  1. Сейчас подключено
  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
Answer 1

Чтобы получить подключенные модули пользователя, можно создать реляцию с использованием промежуточной таблицы.

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();
}
READ ALSO
regexp взять meta теги php

regexp взять meta теги php

Пытаюсь взять мета-теги со страницы, в которых есть html разметка, например:

102
PHP не изменяется переменная

PHP не изменяется переменная

Проверял через консоль, что при обращении к этому коду через type=set&set=true isSending меняется на true, но если потом обратиться через type=get то переменная...

116
Ajax обновление input при нажатии на button кнопки

Ajax обновление input при нажатии на button кнопки

<?php echo $tdResultCard['idCart'] ?> нужно для того, чтобы не было похожих полей/кнопок, те

128
Обязательный аргументы метода класса

Обязательный аргументы метода класса

Будет ли срабатывать метод класса, если не указать все обязательные аргументы этого метода? или будет возвращать false/exit?

92