User Group not found with key Новый


Добрый день!

Сделал сниппет, чтобы добавить всех пользователей в группе «4» в группу «11»
<?php
$usergroup = 4;
$c = $modx->newQuery('modUser');
$c->innerJoin ('modUserProfile','Profile');
$c->innerJoin ('modUserGroupMember','UserGroupMembers');
$c->innerJoin ('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
$c->leftJoin ('modUserGroupRole','UserGroupRole','`UserGroupMembers`.`role` = `UserGroupRole`.`id`');
$c->where(array(
'UserGroupMembers.user_group' => $usergroup,
'UserGroupMembers.role' => '1',
));
$users = $modx->getCollection('modUser',$c);
foreach($users as $user) {
	$user->joinGroup('11','1');
}
Выдает ошибку
(ERROR @ /index.php) User Group not found with key: 11
Группа под таким номером предварительно создана. Кэш чистил в том числе принудительно удалением папки cache/

Если писать $user->joinGroup('название_группы','1');

Выдает ошибку
(ERROR @ /index.php) User Group not found with key:  

Почему modx не видит группу или какая-то другая причина есть?

UPD:Проблема была в кавычках.
Решение:

<?php
$usergroup = 4;
$c = $modx->newQuery('modUser');
$c->innerJoin ('modUserProfile','Profile');
$c->innerJoin ('modUserGroupMember','UserGroupMembers');
$c->innerJoin ('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
$c->leftJoin ('modUserGroupRole','UserGroupRole','`UserGroupMembers`.`role` = `UserGroupRole`.`id`');
$c->where(array(
'UserGroupMembers.user_group' => $usergroup,
'UserGroupMembers.role' => '1',
));
$users = $modx->getCollection('modUser',$c);
foreach($users as $user) {
	$user->joinGroup(11,1);
}
01 сентября 2016, 11:36    Николай   
0    346 0

Комментарии (9)

  1. Владислав 01 сентября 2016, 12:27 # +1
    foreach($users as $user) {
            $groupMember = $modx->newObject('modUserGroupMember');
            $groupMember->set('user_group', 11);
            $groupMember->set('role', 1);
            
            $groups[] = $groupMember;
    
    	if ($user->addMany($groups)) {
                $user->save();
    	}
    }
    
    1. Николай 01 сентября 2016, 12:39 # 0
      Спасибо. Правда в группу так и не добавляет. О чём-то долго думает, потом сохраняет выбранные профили в том же виде. (Журнал ошибок пустой)
    2. Сергей Шлоков 01 сентября 2016, 12:48 # +1
      $user->joinGroup('11','1');
      Кто вас надоумил указывать id в кавычках. Естественно будут ошибки, если у вас нет группы с названием '11' и роли с названием '1'.
      1. Николай 01 сентября 2016, 12:54 # 0
        Спасибо.
        Кто вас надоумил указывать id в кавычках.
        Ну как, нажал в modx кнопку помощь, а там пример. Вот я на эти грабли ещё раз и наступил.
        <?php
        // Get modUser object
        $user = $modx->getObject('modUser', array('username' => $username));
        if( $user ){
            $user->save();
            // Assign new user to User Group / Role
            $user->joinGroup('UserGroupNameOrId','OptionalRoleNameOrId');}
        ?>
      2. Марат Марабар 01 сентября 2016, 13:12 # -2
        А не проще SQL запрос сделать в phpMyAdmin?
        Что-то типа такого
        INSERT INTO modx_member_groups
        (user_group,member,role,rank)
        select 11 as user_group,member,1 as role,rank from modx_member_groups
        where user_group=4
        
        1. Николай 01 сентября 2016, 13:19 # -1
          Спасибо. Вопрос уже решен. Думаю, что не проще — мне кажется, там одной таблицей дело не ограничивается. Замучаетесь потом концы искать.
          Стоит все же использовать возможности modx для работы с modx.
          1. Здоров Александр 01 сентября 2016, 13:28 # 0
            выложите потом, пожалуйста, как вы решили данную проблему
            1. Николай 01 сентября 2016, 13:46 # +1
              Обновил пост.
            2. Марат Марабар 01 сентября 2016, 16:42 # -1
              Зря кажется. Всё в одной таблице modx_member_groups
          Вы должны авторизоваться, чтобы оставлять комментарии.