Salesforce PHP Toolkit - 从嵌套 SOQL 查询中提取数据 [英] Salesforce PHP Toolkit - pullup data from nested SOQL query
问题描述
理想情况下,当我通过 PHPToolkit 在 salesforce 上执行单个 SOQL 查询时,我没有问题.
Ideally, when i do single SOQL query on salesforce via PHPToolkit I have no problem with it.
示例代码:
$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 查询时,我不知道如何从子查询的结果中提取数据.这是我的代码如下:
But when I do nested SOQL query, I don't know how to pull data from the result of sub query. Here's my code below:
$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.";
}
这是我从上面得到的错误代码.
Here's the error code I got from above.
注意: 未定义的属性:C:\xampp\htdocs\automation\tcse\engine\nested_query.php 中的 stdClass::$ActivityDate 在线 66
Notice: Undefined property: stdClass::$ActivityDate in C:\xampp\htdocs\automation\tcse\engine\nested_query.php on line 66
注意:未定义的属性:stdClass::$Subject inC:\xampp\htdocs\automation\tcse\engine\nested_query.php在线67
Notice: Undefined property: stdClass::$Subject in C:\xampp\htdocs\automation\tcse\engine\nested_query.php on line 67
注意:未定义的属性:stdClass::$Description inC:\xampp\htdocs\automation\tcse\engine\nested_query.php在线68
Notice: Undefined property: stdClass::$Description in C:\xampp\htdocs\automation\tcse\engine\nested_query.php on line 68
当我执行 echo print_r($result2->records); 时,这是我得到的:
When I do echo print_r($result2->records); here's what I got:
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
我的目标是获取 ActivityHistory 中的数据(Id、描述和主题),以便我可以将其分配给一个变量并继续我的项目.我需要你们的帮助.
My goal here is to get the data inside ActivityHistories (Id, Description & Subject) so I can assign it to a variable and continue with my project. I need your help guys.
推荐答案
Me with by friends 通过以下代码解决了这个问题:
Me with by friends solved this by the following code below:
$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.";
}
通俗地说:由于结果是数组内的数组,因此我们使用循环内的循环拉取数据.
In a layman's term: Since the result is an array inside an array, we pulled the data using loop inside a loop.
这篇关于Salesforce PHP Toolkit - 从嵌套 SOQL 查询中提取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!