2

我正在尝试使用 PHP API 查询我的 SalesForce 数据库。我正在成功检索结果,但是它们在很大程度上是无用的。在对结果执行 print_r 时,我从以下查询中收到这些结果:

询问:

$query = "SELECT C.Id, C.FirstName, C.LastName, C.Email FROM Contact C WHERE C.Email = '*******@gmail.com'"; 
$response = $client->query($query);

$response->records 的示例print_r输出:

标准类对象 (
    [类型] => 联系方式
    [Id] => 数组
        (
            [0] => ######
            [1] => ######
        )

    [任何] => NameTest*********@gmail.com
)

我希望在输出对象中看到一个 [fields] 元素,但是我只将我的字段视为一个字符串,在这个 [any] 元素中没有分隔符。我正在使用 partner.wsdl.xml 并且在将数据推送到 SF 时没有问题,只能检索。任何想法如何获取 [fields] 元素或至少 [any] 元素中的分隔符?

4

4 回答 4

7

我与同样的问题作斗争。我最终让它使用以下代码:

$query = "SELECT C.Id, C.FirstName, C.LastName, C.Email FROM Contact C WHERE C.Email = '*******@gmail.com'";

$response = $mySforceConnection->query($query);

foreach ($response as $record) {
    $sObject = new SObject($record);
    print_r($sObject);
}
于 2013-09-17T17:04:27.150 回答
2
$query = "SELECT C.Id, C.FirstName, C.LastName, C.Email FROM Contact C WHERE C.Email = '*******@gmail.com'";

$response = $mySforceConnection->query($query);

    foreach ($response as $record) {
    $sObject = new SObject($record);

    echo $sObject->fields->FirstName;
    echo $sObject->fields->LastName;
    echo $sObject->fields->Email;
    echo $sObject->Id;  //(Id will show like this)

}
于 2013-11-21T10:55:55.073 回答
1

看来您要返回的是 astdClass而不是SObject. 这应该为您自动发生,但请尝试将记录显式传递给new SObject()构造函数。像这样的东西(如果records实际上是一个数组,则需要将其更改为循环):

new SObject($response->records);

现在,您应该可以调用->fields结果了。

至于[any]不显示分隔符,这是因为它们是 XML 标记并且您正在浏览器中查看它,所以标记被呈现为 HTML 并消失。尝试查看页面的 HTML 源代码,您应该会看到它们。

于 2013-04-02T08:30:55.413 回答
1

值得一提的是,我能够通过使用 API 的“retrieve”方法和“query”方法来检索字段。我使用查询方法来获取销售人员 ID,因为您可以在查询中指定搜索条件,然后使用查询方法中的特定 ID 的检索功能。似乎不是最有效的,但它可以完成工作。

请参阅“检索记录”部分。

http://wiki.developerforce.com/page/Getting_Started_with_the_Force.com_Toolkit_for_PHP

于 2013-03-30T04:50:03.307 回答