使用salesforce SOAP api和partner wsdl在php中显示子查询结果时出现问题

时间:2012-05-12 18:26:49

标签: php soap salesforce

这是一个代表我的问题的通用查询示例。

$query = "SELECT Account.Name, Name from Contract WHERE AccountId = '001U0000003q6scIAA'";
$response = $mySforceConnection->query($query);

foreach ($response->records as $record) {
$sObject = new SObject($response->records[0]);
var_dump($sObject);
echo $sObject->sobjects[0]->Name."<br/>\n";
echo $record->fields->Name."<br/>\n";
echo "*******************************<br/>\n";
echo "*******************************<br/>\n";
}

问题是Account.Name字段不会显示。为了防止我的整个方法出错,我们的想法是获取分配给特定帐户的所有合同,并显示合同中的帐户名称和相关信息。 (到目前为止,所有合同字段都显示完好。只是无法显示帐户名称)

感谢您提前协助!

这是var_export()..(我删除了所有自定义字段)

SObject::__set_state(array( 'type' => 'Contract', 'fields' => stdClass::__set_state(array(
'AccountId' => '001U0000003q6scIAA', 'Name' => 'test contract', '1' =>
SObject::__set_state(array( 'type' => 'Account', 'fields' => stdClass::__set_state(array( 
'Name' => 'test Account name', )), )), )), ))

这是var_dump()...

object(SObject)#5 (2) { ["type"]=> string(8) "Contract" ["fields"]=> object(stdClass)#1871 (14) {
["AccountId"]=> string(18) "001U0000003q6scIAA" ["Name"]=> string(18) "Test Contract Name"
["1"]=> object(SObject)#1869 (2) { ["type"]=> string(7) "Account" ["fields"]=> object(stdClass)#1870 (1) { ["Name"]=> string(15) "Account Name" } } } }

1 个答案:

答案 0 :(得分:1)

所以我终于找到了让我走上正确道路的东西。这是我如何解决它...

foreach ($response->records as $record) {
    echo $record->fields->{1}->fields->Name."<br/>\n";
    echo $record->fields->Name."<br/>\n";
    echo "*******************************<br/>\n";
    echo "*******************************<br/>\n";
}

我最初尝试过这种方法,但是没有出现错误的{}。所以你要做的就是查看print_r()输出,将数字改为它给你的数字 - ["1"]=> object(SObject)#1869,这个查询将显示!

感谢Daan试图提供帮助!