I have a Lead and a custom object called Social Account (API Name = Social_Account__c).
I have set a relationship as follows: Lead is a parent of Social Accounts. so a lead has many social accounts.
In the Social Account, I made a custom field named Lead (Data Type: Lookup) to make the relationship.
and here is a lookup detail:
API Name: Lead__c
Related to Lead
Child Relationship Name: Social_Accounts
Related List Label: Social Accounts
I would like to add new social accounts to existing lead if there is a lead with the same email address.
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;
}
but i get a following error message:
Error: Compile Error: Invalid foreign key relationship: Social_Account_c.Lead_c
what am I doing wrong? I would appreciate any suggestions.
thanks
You can't "go through relation" with dot (.) operator with updates, just with reading data.
Change your social_account.Lead__c.id = existing_lead.Id;
into social_account.Lead__c = existing_lead.Id;
Should be all that's needed. Salesforce relations can be
SET by directly modifying the field you have created: Social_Account__c.Lead__c
, putting there Id of object you want to point to.
GET (explored) by modifying the field name a bit and using the dot, in your case it's probably Social_Account__c.Lead__r.(whatever fields on Lead you want)
.
The "_c" and "_r" are for custom objects, for standard ones for example there is Opportunity.AccountId field for setting but if you want to explore up to Account you type Opportunity.Account.Name.
If you'll have trouble remembering it - don't worry, me too ;) Usually when I get such compilation error I try it with query builder (in Apex Explorer or the Eclipse plugin). I click through hierarchy on the object, it's children, it's parents etc and usually can use pieces of generated query directly in my Apex code.