新しいカスタムオブジェクトをExstingリードに追加しようとするとき、外部キー関係を無効にします
-
05-10-2019 - |
質問
ソーシャルアカウント(API name = social_account__c)と呼ばれるリードとカスタムオブジェクトがあります。
私は次のように関係を設定しました:リードはソーシャルアカウントの親です。そのため、リードには多くのソーシャルアカウントがあります。
ソーシャルアカウントでは、関係を築くためにリード(データ型:ルックアップ)という名前のカスタムフィールドを作成しました。
そして、ここにルックアップの詳細があります:
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
私は何が間違っているのですか?どんな提案にも感謝します。
ありがとう
解決
読み取りデータだけで、DOT(。)オペレーターを使用して「関係を実行する」ことはできません。
あなたを変えてください 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」はカスタムオブジェクト用です。たとえば、標準オブジェクトの場合は機会があります。設定にはacccountidフィールドがありますが、cccount.nameと入力するために探索したい場合。
あなたがそれを覚えておくのに苦労しているなら - 私も心配しないでください;)通常、そのようなコンピレーションエラーが発生したとき、私はクエリビルダー(Apex ExplorerまたはEclipseプラグイン)でそれを試してみます。オブジェクトの階層をクリックします。それは子供であり、親であり、通常、頂点コードで生成されたクエリを直接使用できます。