Salesforce Toolkit 20.0 API创建记录:“必填字段缺失:[Student__c]”

时间:2018-02-15 14:55:03

标签: php salesforce

我正在尝试使用Toolkit 20.0 PHP API在Salesforce中创建新记录。该对象具有主 - 详细信息关系字段,每次我尝试在此对象中创建新记录时,都会收到一条错误,指出:“必填字段缺失:[field_name__c]”。我将18位Salesforce ID传递给该字段,因此我不明白为什么它认为它丢失了。

$payment = new stdclass();
$payment->Bill_Amount__c = sprintf("%.2f", (int)$billamount);
$payment->Customer_Name__c = $debitcustname;
$payment->Student__c = $contact->records[0]->Id;
$payment->Transaction_Date__c = $transactiondate;

$createResponse = $sf->create($payment, 'Student_Payment__c');

当我var_dump $ payment时,我得到以下对象,这对我来说是正确的:

object(stdClass)#7 (8) {
  ["Student__c"]=>
  string(18) "0033D00000NGoNNQA1"
  ["Bill_Amount__c"]=>
  string(6) "100.00"
  ["Customer_Name__c"]=>
  string(6) "SAMUEL"
  ["Transaction_Date__c"]=>
  string(20) "2017-01-01T00:00:00Z"
}

我还检查了我的wsdl.xml文件,并且存在Student__c字段。

<element name="Student__c" nillable="true" minOccurs="0" type="tns:ID"/>

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

您是否尝试过通过Workbench或Salesforce Dev Console手动创建记录?

或者,我会在Salesforce中创建一个调试日志,然后调试Student_Payment__c对象的before insert触发器。

您正在做的事情应该在技术上有效,可能是Salesforce触发器中的一些代码导致问题或自定义对象的验证规则设置。

答案 1 :(得分:0)

事实证明,问题是create方法的第一个参数需要是一个数组。将$ payment变量括在括号中可以解决问题。

$payment = new stdclass();
$payment->Bill_Amount__c = sprintf("%.2f", (int)$billamount);
$payment->Customer_Name__c = $debitcustname;
$payment->Student__c = $contact->records[0]->Id;
$payment->Transaction_Date__c = $transactiondate;

$createResponse = $sf->create([$payment], 'Student_Payment__c');