Недопустимая связь внешнего ключа при попытке добавить новый пользовательский объект к существующему интересу.
-
05-10-2019 - |
Вопрос
У меня есть интерес и пользовательский объект под названием «Социальная учетная запись» (имя API = Social_Account__c).
Я установил отношения следующим образом:Lead является родителем социальных аккаунтов.поэтому у лида много аккаунтов в социальных сетях.
В социальной учетной записи я создал настраиваемое поле с именем «Лид» (тип данных:Поиск), чтобы установить связь.
и вот детали поиска:
Имя API:Ведущий__c
Связано с лидерством
Имя дочернего родства:Социальные_аккаунты
Метка связанного списка:Социальные аккаунты
Я хотел бы добавить новые учетные записи в социальных сетях к существующему интересу, если есть интерес с таким же адресом электронной почты.
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.Lead__c.id = existing_lead.Id;
в social_account.Lead__c = existing_lead.Id;
Должно быть все, что нужно.Отношения с отделом продаж могут быть
НАБОР путем непосредственного изменения созданного вами поля: Social_Account__c.Lead__c
, поместив туда идентификатор объекта, на который вы хотите указать.
ПОЛУЧАТЬ (исследовано), немного изменив имя поля и используя точку, в вашем случае это, вероятно, Social_Account__c.Lead__r.(whatever fields on Lead you want)
.
«_c» и «_r» предназначены для пользовательских объектов, например, для стандартных объектов есть поле Opportunity.AccountId для настройки, но если вы хотите изучить учетную запись, введите Opportunity.Account.Name.
Если у вас возникнут проблемы с запоминанием — не волнуйтесь, я тоже;) Обычно, когда я получаю такую ошибку компиляции, я пробую это с помощью построителя запросов (в Apex Explorer или плагине Eclipse).Я просматриваю иерархию объекта, его дочерние элементы, родительские элементы и т. д., и обычно могу использовать фрагменты сгенерированного запроса непосредственно в своем коде Apex.