SOQL - l'Interrogation de la liste des utilisateurs l'utilisateur actuel est le suivant
Dans mon application je afficher une liste des utilisateurs actuels. Je vous le demande comme ceci:
Tentative 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];
C'est exactement ce qu'il est censé lorsque vous êtes connecté en tant qu'admin, mais j'ai trouvé que la non-admins obtenez un message d'erreur:
De mise en œuvre de la restriction: EntitySubscription permet uniquement de la sécurité
d'évaluation pour les utilisateurs non-administrateurs lorsque la LIMITE est spécifiée et à plus
1000
OK, pas grave, je vais juste mettre une LIMITE sur y comme:
Tentative 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];
Facile, droit? MAL. Cela donne les éléments suivants:
attend à un droit parenthèses, trouve "LIMITE"
OK...
J'ai ensuite essayé de le casser comme si:
Tentative 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];
Je croise mes doigts et...
Invalid bind expression type of LIST<Id> for column of type Id
Hmm, j'avais vu des exemples où cela semble possible, comme sur la developerforce conseils, donc je suis un peu une perte de maintenant.
Nous voici donc. J'ai besoin de sélectionner une liste de noms d'utilisateur et les images que l'utilisateur est notamment suite à Chatter. Si il y a une façon totalement différente de ce que je suis ouvert à elle.
Vous devez vous connecter pour publier un commentaire.
Essayez de supprimer les parenthèses autour de la liaison, c'est à dire changer:
à:
Et également simplifier la requête par juste pour s'assurer que votre liste d'Id ne contient pas de courant ID de l'utilisateur:
Espère que ça aide!