使用salesforce api将联系人与帐户相关联

jps*_*yes 7 php api salesforce

我是使用salesforce api的新手.我已经下载了saleforce/php工具包,并且能够从我服务器上的webform成功创建联系人和帐户.

要创建联系人,我正在执行以下操作:

    $records[0] = new stdclass();
    $records[0]->FirstName = $FirstName;
    $records[0]->LastName = $LastName;
    $records[0]->Email = $Email;
    $records[0]->Phone = $Phone;
    $records[0]->MailingStreet = $MailingStreet;
    $records[0]->MailingCity = $MailingCity;
    $records[0]->MailingState = $MailingState;
    $records[0]->MailingPostalCode = $MailingPostalCode;
    $records[0]->MailingCountry = $MailingCountry;
    $records[0]->LeadSource = $LeadSource;

    $create = $mySforceConnection->create($records, 'Contact');
Run Code Online (Sandbox Code Playgroud)

要创建帐户,我正在执行以下操作

    $records[0] = new stdclass();
    $records[0]->Name = $Name

    $create = $mySforceConnection->create($records, 'Account');
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个简单的例子,说明如何将联系人与帐户相关联?

我在表单上有一个复选框,询问这是否是一个组织.如果用户选中此框,我想创建一个包含某些数据的组织帐户,并创建与某些数据的联系并将两者相关联.

我并不是在寻找一个完整的工作实例,而是更多的只是让我指向正确的方向.

假设我有一个ID为001Z0000004XeWfIAK的帐户

我试过了

    $records[0] = new stdclass();
    $records[0]->FirstName = $FirstName;
    $records[0]->LastName = $LastName;
    $records[0]->Email = $Email;
    $records[0]->Phone = $Phone;
    $records[0]->MailingStreet = $MailingStreet;
    $records[0]->MailingCity = $MailingCity;
    $records[0]->MailingState = $MailingState;
    $records[0]->MailingPostalCode = $MailingPostalCode;
    $records[0]->MailingCountry = $MailingCountry;
    $records[0]->LeadSource = $LeadSource;
    $records[0]->AccountId = '001Z0000004XeWfIAK';

    $create = $mySforceConnection->create($records, 'Contact');
Run Code Online (Sandbox Code Playgroud)

@ superfell

它返回:

Array
(
    [0] => stdClass Object
        (
            [errors] => Array
                (
                    [0] => stdClass Object
                        (
                            [message] =>  A Household Contact's account must be a household.
                            [statusCode] => FIELD_CUSTOM_VALIDATION_EXCEPTION
                        )

                )

            [id] => 
            [success] => 
        )

)

但我试图将联系人与orginization联系起来

Jer*_*oss 6

联系方式有一个AccountId领域.因此,下面的代码假定您在名为的变量中拥有帐户ID,$accountId并且$resource[0]是您要关联的联系人.

$records[0]->AccountId = $accountId
$mySforceConnection->update($records)
Run Code Online (Sandbox Code Playgroud)

我不太了解php,但我认为这将接近正确.


jps*_*yes 6

好的,我自己也在回答这个问题,因为我不能将Superfell的评论标记为答案.但他的评论

"当您创建帐户时,您需要将recordTypeId设置为不是家庭记录类型的记录类型. - superfell"

帮助我得到了答案.

这是我创建帐户的最终代码,然后是该帐户的联系人.

    //First I create a simple account
    //With no recordTypeId specified it defaults to the the type I want

    $records[0] = new stdclass();
    $records[0]->Name = $Name;

    //Create a new orginization account
    $org = $mySforceConnection->create($records, 'Account');
Run Code Online (Sandbox Code Playgroud)

创建帐户后,Salesforce将使用新的AccountId返回成功消息

Array
(
    [0] => stdClass Object
        (
            [id] => 001Z0000004XfXcIAK
            [success] => 1
        )

)

然后,我可以创建一个联系人并将其与我的新帐户关联

    $contact[0] = new stdclass();
    $contact[0]->FirstName = $FirstName;
    $contact[0]->LastName = $LastName;
    $contact[0]->Email = $Email;
    $contact[0]->Phone = $Phone;
    $contact[0]->MailingStreet = $MailingStreet;
    $contact[0]->MailingCity = $MailingCity;
    $contact[0]->MailingState = $MailingState;
    $contact[0]->MailingPostalCode = $MailingPostalCode;
    $contact[0]->MailingCountry = $MailingCountry;
    $contact[0]->LeadSource = $LeadSource;

    //This is where my problem was, Thanks again superfell
    //$organization_contact = My custom Salesforce contact type ID, E.G. recordTypeId
    $contact[0]->recordTypeId = $orginization_contact;

    //The AccountId is the account I want to associate this contact with.
    //AccountId was returned by Salesforce upon the creation of the account (See above)  
    $contact[0]->AccountId = $org[0]->id;

    $contact = $mySforceConnection->create($contact, 'Contact');
Run Code Online (Sandbox Code Playgroud)

再次感谢Jeremey和Superfell.节省了我几个小时.