состоящих массиве в одних группах, при этом исключить пользователей, состоящих в других группах.
Пример выборки
$rsUsers = \Bitrix\Main\UserTable::getList([
"filter" => [
"=GROUPS.GROUP_ID" => [8],
"!GROUPS.GROUP_ID" => [9],
],
"select" => [
"ID",
'GROUP_ID' => 'GROUPS.GROUP_ID',
],
]);
Условие "!GROUPS.GROUP_ID" => [9], не отрабатывает.
Есть например 2 пользователя.
1. состоит в обоих группах
2. состоит только в группе 8
При такой выборке выбирает обоих пользователей, но не выбирает группу 9. Т.е. условие не срабатывает. Попробовал сгруппировать по группе ('group' => ['GROUPS.GROUP_ID']), все равно отдаются пользователи отдельно по каждой группе.
Можно ли сделать выборку с фильтром типа:
AND
"=GROUPS.GROUP_ID" => [8],
"!GROUPS.GROUP_ID" => [9],
?
Логика and работает по умолчанию. Там связь one2many. Я так подозреваю, что только вторым запросом. Сначала собираешь юзеров 8 группы, вторым запросом передаешь фильтр по ИД + исключающий фильтр по группе 9.
Вы для начала представьте себе этот запрос. Здесь только подзапросами.
$query = \Bitrix\Main\UserTable::query() ->whereIn('GROUPS.GROUP_ID', [1, 5, ]) ->whereNotIn('GROUPS.GROUP_ID', [2, 3, ]) ->addSelect('ID');
спасибо. попробую.
тоже самое. не делает исключений.
спасибо. попробую.
Обсуждают сегодня