You are here

Drupal8通过代码实现只包含不含其它角色用户的用户列表

作者:亚艾元技术部

Drupal8中只包含不含其它角色用户的用户列表,就是说这些用户只是注册用户,没有分配其它任何角色。经过反复的测试,终于找到可以工作的代码:

我开始用entityQuery尝试了很多次,中间一度放弃,最后找到办法:

	$ids = \Drupal::entityQuery('user')
	->condition('status', 1)
	//->exists('roles')
	->condition('roles', NULL, 'IS NULL') 	//只包含普通用户的,已分配角色不包含
	//->condition('roles', $other_role_ids,'NOT IN')  //用户不包含已有角色的
	->condition('uid', 1, '>')  //用户不包含用户1
	->execute();


另一个是我中间先到的办法,使用views,获取列表,使用views构建的sql获取,下面的sql是views生成的:

SELECT users_field_data.uid AS users_field_data_uid, users_field_data.uid AS uid
FROM
{users_field_data} users_field_data
LEFT JOIN {user__roles} user__roles ON users_field_data.uid = user__roles.entity_id AND user__roles.deleted = '0'
WHERE (users_field_data.status = '1') AND (user__roles.roles_target_id IS NULL)
ORDER BY users_field_data_uid ASC
LIMIT 11 OFFSET 0


论坛:

Drupal版本: