Salesforce 以列表形式获取当前活动帐户的联系人电子邮件

Salesforce 以列表形式获取当前活动帐户的联系人电子邮件,salesforce,apex,apex-code,soql,salesforce-lightning,Salesforce,Apex,Apex Code,Soql,Salesforce Lightning,给定:Salesforce用户正在查看帐户页面 期望输出:与当前作为列表对象查看的帐户相关的所有联系人电子邮件 我的代码: SELECT Email FROM Contact WHERE Id IN (SELECT ContactId FROM AccountContactRelation WHERE AccountId = ApexPages.CurrentPage.getParameters().get('id')) 这不会检索任何结果。当使用固定号码而不是ApexPages.Curren

给定:Salesforce用户正在查看帐户页面

期望输出:与当前作为列表对象查看的帐户相关的所有联系人电子邮件

我的代码:

SELECT Email FROM Contact WHERE Id IN (SELECT ContactId FROM AccountContactRelation WHERE AccountId = ApexPages.CurrentPage.getParameters().get('id'))
这不会检索任何结果。当使用固定号码而不是ApexPages.CurrentPage.getParameters.get'id时,电子邮件会正确返回


我对Apex有点陌生。有人能指出我做错了什么吗?

要获得所需的输出,需要使用SOQL变量注入

您可以通过先创建一个变量,然后使用:和变量名引用SOQL中的变量来完成此操作:

String theAccountId = ApexPages.CurrentPage.getParameters().get('id');
List<Contact> theContacts = [SELECT Email FROM Contact WHERE Id IN (SELECT ContactId FROM AccountContactRelation WHERE AccountId = :theAccountId)];

要获得所需的输出,需要使用SOQL变量注入

您可以通过先创建一个变量,然后使用:和变量名引用SOQL中的变量来完成此操作:

String theAccountId = ApexPages.CurrentPage.getParameters().get('id');
List<Contact> theContacts = [SELECT Email FROM Contact WHERE Id IN (SELECT ContactId FROM AccountContactRelation WHERE AccountId = :theAccountId)];

您可以使用带有绑定变量的静态查询来检索正确的结果

此外,该对象还包含自己的AccountId字段。因此,根据您的设置,您可能能够消除子查询。您可能还希望过滤掉空的电子邮件字段,因为电子邮件不是必填字段

完整的结果可能如下所示:

String accountId = ApexPages.CurrentPage.getParameters().get('id');

List<Contact> accountContactsEmailList = [
  SELECT
    Email
  FROM
    Contact
  WHERE
    Email != ''
    AND AccountId = :accountId
];

for (Contact contact : accountContactsEmailList) {
  System.debug(contact.Email);
}

您可以使用带有绑定变量的静态查询来检索正确的结果

此外,该对象还包含自己的AccountId字段。因此,根据您的设置,您可能能够消除子查询。您可能还希望过滤掉空的电子邮件字段,因为电子邮件不是必填字段

完整的结果可能如下所示:

String accountId = ApexPages.CurrentPage.getParameters().get('id');

List<Contact> accountContactsEmailList = [
  SELECT
    Email
  FROM
    Contact
  WHERE
    Email != ''
    AND AccountId = :accountId
];

for (Contact contact : accountContactsEmailList) {
  System.debug(contact.Email);
}