理想情况下,当我通过PHPToolkit对salesforce执行单个SOQL查询时,我没有遇到任何问题。
示例代码:
$querySourceQueues = "SELECT Id, AccountId, CaseNumber FROM Case WHERE CaseNumber = '00491258'";
$result = $mySforceConnection->query($querySourceQueues);
if ($result->size > 0) {
foreach ($result->records as $case) {
$CaseId = $case->Id;
$AccountId = $case->AccountId;
$CaseNum = $case->CaseNumber;
echo "Case ID: ".$CaseId."<br>";
echo "Account ID: ".$AccountId."<br>";
echo "Case Number: ".$CaseNum."<br>";
}
} else {
echo "No Result";
}
但是当我嵌套SOQL查询时,我不知道如何从子查询的结果中提取数据。这是我的代码:
$querySourceQueues2 = "SELECT Id, AccountId, CaseNumber, (SELECT ActivityDate, Subject, Description FROM ActivityHistories ORDER BY ActivityDate DESC, LastModifiedDate DESC LIMIT 500) FROM Case WHERE CaseNumber = '00491258'";
$result2 = $mySforceConnection->query($querySourceQueues2);
if ($result->size > 0) {
foreach ($result2->records as $case) {
////No Error in this part
$CaseId = $case->Id;
$AccountId = $case->AccountId;
$CaseNum = $case->CaseNumber;
echo "Case ID: ".$CaseId."<br>";
echo "Account ID: ".$AccountId."<br>";
echo "Case Number: ".$CaseNum."<br>";
////I got the error on this part
$ActivityDate = $case->ActivityHistories->ActivityDate; // Line 66
$Subject = $case->ActivityHistories->Subject; // Line 67
$Description = $case->ActivityHistories->Description; // Line 68
echo "Activity Date: ".$ActivityDate."<br>";
echo "Subject: ".$Subject."<br>";
echo "Description: ".$Description."<br>";
}
} else {
echo "No result.";
}
这是我从上面得到的错误代码。
注意:未定义属性:stdClass :: $ ActivityDate位于 C:\ xampp \ htdocs \ automation \ tcse \ engine \ nested_query.php 66
注意:未定义的属性:stdClass :: $ Subject in C:\ xampp \ htdocs \ automation \ tcse \ engine \ nested_query.php 在线 67
注意:未定义的属性:stdClass :: $描述中 C:\ xampp \ htdocs \ automation \ tcse \ engine \ nested_query.php 在线 68
当我回显print_r($ result2-&gt;记录); 这里是我得到的:
Array (
[0] => stdClass Object (
[Id] => 5000B00000cfiq2QAA
[AccountId] => 001U000000aBVbIIAW
[ActivityHistories] => stdClass Object (
[done] => 1 [queryLocator] => [records] => Array (
[0] => stdClass Object (
[Id] => [ActivityDate] => 2017-07-06
[Description] => This is a system-generated email...
[Subject] => Request has been updated
)
[1] => stdClass Object (
[Id] => [ActivityDate] => 2017-07-06
[Description] => This is a system-generated email...
[Subject] => Email: Request has been updated
)
) [size] => 2
)
[CaseNumber] => 00491258
)
) 1
我的目标是获取ActivityHistories(Id,Description&amp; Subject)中的数据,以便将其分配给变量并继续我的项目。我需要你的帮助。
答案 0 :(得分:0)
我和朋友通过以下代码解决了这个问题:
$querySourceQueues2 = "SELECT Id, AccountId, CaseNumber, (SELECT ActivityDate, Subject, Description FROM ActivityHistories ORDER BY ActivityDate DESC, LastModifiedDate DESC LIMIT 500) FROM Case WHERE CaseNumber = '00491258'";
$result2 = $mySforceConnection->query($querySourceQueues2);
if ($result2->size > 0) {
foreach ($result2->records as $case) {
$CaseId = $case->Id;
$AccountId = $case->AccountId;
$CaseNum = $case->CaseNumber;
echo "Case ID: ".$CaseId."<br>";
echo "Account ID: ".$AccountId."<br>";
echo "Case Number: ".$CaseNum."<br>";
foreach ($case->ActivityHistories->records as $record) {
$ActivityDate = $record->ActivityDate;
$Subject = $record->Subject;
$Description = $record->Description;
echo "Activity Date: ".$ActivityDate."<br>";
echo "Subject: ".$Subject."<br>";
echo "Description: ".$Description."<br>";
}
}
} else {
echo "No result.";
}
在一个外行人的术语中:由于结果是数组中的数组,我们使用循环内的循环来提取数据。