【发布时间】:2018-04-25 23:59:34
【问题描述】:
每当我通过 SalesForce PHP api 运行此代码时,它都会失败并显示 err:Notice: Trying to get property of non-object
$query ="SELECT accountId,Status,Id,Service_Account_DMKT__r.name,(select Activity_Type__c from Tasks) from case where Owner.Name ='" . $name . "' AND CreatedDate = THIS_MONTH AND Record_type_name__c='Performance Reviews' AND status NOT IN ('')";
$response = $mySforceConnection->query($query);
$queryResult = new QueryResult($response);
foreach($queryResult->records as $case){
//for ($queryResult->rewind(); $queryResult->pointer < $queryResult->size; $queryResult->next()) {
$callCounter = 0;
$emailCounter = 0;
$accountId = $case->current()->accountId;
$accountName=$case->current()->Service_Account_DMKT__r->Name;
$caseId= $case->current()->Id;
if($case->any['Tasks']->records) {
$counter=0;
foreach($case->any['Tasks']->records as $record) {
$taskRecord = $record->any;
if (strpos($taskRecord, 'Call - Outbound') !== false) {
$callCounter++;
} else {
$emailCounter++;
}
$counter++;
}
}
echo '<p>AccountName=' . $accountName . '</p><p>CaseId=' . $caseId . '</p>';
echo '<p>' . $callCounter . ' Calls and ' . $emailCounter . ' emails';
echo'<hr>';
$index++;
}
print_r($case);
我知道是因为这三行。我没有正确地遍历对象。
$accountId = $case->current()->accountId;
$accountName=$case->current()->Service_Account_DMKT__r->Name;
$caseId= $case->current()->Id;
但我不确定用什么来代替 current()。下面是来自 SF API 的响应对象
stdClass Object
(
[type] => Case
[Id] => Array
(
[0] => 5000e00001J7L0pAAF
[1] => 5000e00001J7L0pAAF
)
[any] => Array
(
[0] => 00130000002bqXiAAIClosed - Contact Declined5000e00001J7L0pAAF
[Service_Account_DMKT__r] => stdClass Object
(
[type] => Account
[Id] =>
[any] => brinsoncorsicanafordfd
)
[Tasks] => stdClass Object
(
[done] => 1
[queryLocator] =>
[records] => Array
(
[0] => stdClass Object
(
[type] => Task
[Id] =>
[any] =>
)
)
[size] => 1
)
)
)
【问题讨论】:
-
哪一个是非对象?因此是什么线?是
current()的回归,还是$case本身的回归,还是Service_Account_DMKT__r的回归?调试它,做一些 var_dumps! -
考虑到之前的
$case->current(),这个$queryResult->current()感觉很奇怪。 -
即使在您的输出中,嵌套数组在此调用
$case->current()->Service_Account_DMKT__r->Name;中也没有Name的值 -
挑战在于我无法正确输出这三行。在最后一行使用 $queryresult 是一个错字,应该是 $case。我的问题是我不知道如何通过对象从 $case 到 Name。 $case 基本上只是 $queryResult->records
-
另外,非对象是所有三行,因为我没有正确地穿过对象
标签: php arrays object salesforce