我正在尝试使用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"/>
我在这里做错了什么?
答案 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');