4

我有一个潜在客户和一个名为社交帐户的自定义对象(API 名称 = Social_Account__c)。

我设置了如下关系:Lead 是 Social Accounts 的父级。所以一个潜在客户有很多社交账户。

在社交帐户中,我创建了一个名为 Lead(数据类型:查找)的自定义字段来建立关系。

这是一个查找详细信息:

API 名称:Lead__c

与铅有关

子女关系名称:Social_Accounts

相关列表标签:社交账户

如果有具有相同电子邮件地址的潜在客户,我想将新的社交帐户添加到现有潜在客户。


Social_Account__c social_account = new Social_Account__c();
/*add whatever fields on social_account*/

List<Lead> leads =[select Id from Lead where Email =:emailAddress ];
if(leads.size()>0)
{ 
    Lead existing_lead = new Lead(Id = leads[0].id);
    //ideally i would like to do something like this
    social_account.Lead__c.id = existing_lead.id; //this is where I get an error from

    insert social_account;
    update existing_lead;
}

但我收到以下错误消息:

错误:编译错误:无效的外键关系:Social_Account_ c.Lead _c

我究竟做错了什么?我将不胜感激任何建议。

谢谢

4

1 回答 1

7

您不能通过点 (.) 运算符“通过关系”进行更新,而只是读取数据。

改变你social_account.Lead__c.id = existing_lead.Id;social_account.Lead__c = existing_lead.Id;

应该是所有需要的。Salesforce 关系可以是

通过直接修改您创建的字段来设置Social_Account__c.Lead__c: ,将您要指向的对象的 ID 放在那里。

通过稍微修改字段名称并使用点来获取Social_Account__c.Lead__r.(whatever fields on Lead you want)(已探索),在您的情况下,它可能是.

“_c”和“_r”用于自定义对象,对于标准对象,例如有 Opportunity.AccountId 字段用于设置,但如果您想探索帐户,请键入 Opportunity.Account.Name。


如果你记起来有困难——别担心,我也是;)通常当我遇到这样的编译错误时,我会尝试使用查询生成器(在 Apex Explorer 或 Eclipse 插件中)。我单击对象上的层次结构,它是子对象、父对象等,通常可以直接在我的 Apex 代码中使用生成的查询片段。

于 2010-09-25T06:56:39.513 回答