Как вывести участника двух групп?
Понадобилось мне вывести ресурсы пользователя который состоит в двух группах одновременно
Примерно так
Группа 2 Поэт
Группа 3 Писатель
Группа 4 Одобрено модератором
При регистрации автор указывает кто он и публикует тексты
Если модератор видит что это тексты нормальные добавляет пользователя в группу 4 «одобрено модератором»
И ни чего не выходит
часть запроса такая
Примерно так
Группа 2 Поэт
Группа 3 Писатель
Группа 4 Одобрено модератором
При регистрации автор указывает кто он и публикует тексты
Если модератор видит что это тексты нормальные добавляет пользователя в группу 4 «одобрено модератором»
И ни чего не выходит
часть запроса такая
'select' => [
'modResource' => '*',
'modUserGroupMember' => 'modUserGroupMember.member,modUserGroupMember.user_group',
],
'leftJoin' => [
'modUserGroupMember' => [
'class' => 'modUserGroupMember',
'on' => 'modUserGroupMember.member = modResource.createdby'
]
]
'where' => '{"modUserGroupMember.user_group": 3, "AND:modUserGroupMember.user_group": 4 }'
Поблагодарить автора
Отправить деньги
Комментарии: 7
Надо делать два джойна для modUserGroupMember. Как-то так:
'select' => [
'modResource' => '*',
'userType' => 'userType.member,userType.user_group',
'userAccess' => 'userAccess.member,userAccess.user_group',
],
'leftJoin' => [
'userType' => [
'class' => 'modUserGroupMember',
'on' => 'userType.member = modResource.createdby'
],
'userAccess' => [
'class' => 'modUserGroupMember',
'on' => 'userAccess.member = modResource.createdby'
]
]
'where' => '{"userType.user_group": 3, "AND:userAccess.user_group": 4 }'
Оу, ну не так, конечно. Вот так, наверное:
'select' => [
'modResource' => '*',
'userType' => 'userType.member,userType.user_group',
'userAccess' => 'userAccess.member,userAccess.user_group',
],
'leftJoin' => [
'userType' => [
'class' => 'modUserGroupMember',
'on' => 'userType.member = modResource.createdby AND userType.user_group = 3'
],
'userAccess' => [
'class' => 'modUserGroupMember',
'on' => 'userAccess.member = modResource.createdby AND userAccess.user_group = 4'
]
]
'where' => '{"userType.user_group:IS NOT": NULL, "AND:userAccess.user_group:IS NOT": NULL }'
И вообще, наверное, надо без WHERE — просто сделать rightJoin
'select' => [
'modResource' => '*',
'userType' => 'userType.member,userType.user_group',
'userAccess' => 'userAccess.member,userAccess.user_group',
],
'leftJoin' => [
'userType' => [
'class' => 'modUserGroupMember',
'on' => 'userType.member = modResource.createdby AND userType.user_group = 3'
]
],
'rightJoin' => [
'userAccess' => [
'class' => 'modUserGroupMember',
'on' => 'userAccess.member = modResource.createdby AND userAccess.user_group = 4'
]
],
Спасибо, Илья! Выручали вы меня уже много раз своими статьями
Не-не — если делать rightJoin, то для обоих случаев. Или придётся вернуть where, но убрать AND userType.user_group = 3
Если я не ошибаюсь, то этот код выведет и пользователей, которые состоят в группе 4, но не состоят в любой другой группе.
Если я не ошибаюсь, то этот код выведет и пользователей, которые состоят в группе 4, но не состоят в любой другой группе.
'select' => [
'modResource' => '*',
'userType' => 'userType.member,userType.user_group',
'userAccess' => 'userAccess.member,userAccess.user_group',
],
'rightJoin' => [
'userType' => [
'class' => 'modUserGroupMember',
'on' => 'userType.member = modResource.createdby AND userType.user_group = 3'
],
'userAccess' => [
'class' => 'modUserGroupMember',
'on' => 'userAccess.member = modResource.createdby AND userAccess.user_group = 4'
]
],
да я уже понял
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.