gpt4 book ai didi

salesforce - SOQL - 查询当前用户关注的用户列表

转载 作者:行者123 更新时间:2023-12-03 09:53:22 24 4
gpt4 key购买 nike

在我的应用程序中,我显示了当前用户的列表。我这样要求:

尝试 1

List<User> Following = [SELECT Id, Name, SmallPhotoUrl 
FROM User
WHERE Id IN (
SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId())
AND Id != :UserInfo.getUserId()
LIMIT 96];

当以管理员身份登录时,这完全符合预期,但我发现非管理员会收到错误:

Implementation restriction: EntitySubscription only allows security evaluation for non-admin users when LIMIT is specified and at most 1000

好的,没什么大不了的,我会像这样在上面设置一个 LIMIT:

尝试 2

List<User> Following = [SELECT Id, Name, SmallPhotoUrl 
FROM User
WHERE Id IN (
SELECT ParentId
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId()
LIMIT 1000)
AND Id != :UserInfo.getUserId()
LIMIT 96];

简单吧?错误的。这给出了以下内容:

expecting a right parentheses, found 'LIMIT'

好的...

然后我试着像这样打破它:

尝试 3

List<EntitySubscription> sub = [SELECT ParentId 
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId()
LIMIT 1000];
List<Id> ids = new List<Id>();
for(EntitySubscription s : sub){
ids.add(s.ParentId);
}
List<User> Following = [SELECT Id, Name, SmallPhotoUrl
FROM User
WHERE Id IN (:ids)
AND Id != :UserInfo.getUserId()
LIMIT 96];

我双手交叉……

Invalid bind expression type of LIST<Id> for column of type Id

嗯,我见过这似乎是可能的例子,例如 developerforce boards ,所以我现在有点不知所措。

所以我们到了。我需要选择特定用户在 Chatter 上关注的用户名和图片列表。如果有完全不同的方法,我愿意接受。

最佳答案

尝试删除绑定(bind)周围的括号,即更改:

WHERE Id IN (:ids) 

到:

WHERE Id IN :ids

并且还通过确保您的 ID 列表不包含当前用户的 ID 来简化查询:

List<EntitySubscription> sub = [SELECT ParentId 
FROM EntitySubscription
WHERE SubscriberId = :UserInfo.getUserId() AND ParentId != :UserInfo.getUserId()
LIMIT 1000];

Set<Id> ids = new Set<Id>();

for(EntitySubscription s : sub){
ids.add(s.ParentId);
}

希望对您有所帮助!

关于salesforce - SOQL - 查询当前用户关注的用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com