【问题标题】:SalesForce.com: Retrieve custom fields via PHPSalesForce.com:通过 PHP 检索自定义字段
【发布时间】:2011-04-20 17:08:29
【问题描述】:

我在我的 SalesForce DE 站点中创建了一个简单的自定义联系人对象(API 名称为 Contact__c),它有一个 Full_Name__c 字段(用于测试连接性)。

然后我尝试通过 PHP 检索所有联系人,特别是该字段:

try {
  $mySforceConnection = new SforcePartnerClient();
  $mySoapClient       = $mySforceConnection->createConnection(API_PATH . '/soapclient/partner.wsdl');
  $mylogin            = $mySforceConnection->login(API_USER, API_PASS . API_SECURITY_TOKEN);

  $query = 'SELECT C.Id, C.Full_Name__c
          FROM Contact__c C'; 
  $result = $mySforceConnection->query($query);
  $sObject = new SObject($result->records[0]);
  print_r($sObject);
} catch(Exception $e) {
  print_r($e);
}

我已经下载了最新的 partner.wdsl(尽管作为合作伙伴 WSDL,它的类型很松散,不需要通过创建/添加自定义对象和/或更新字段来下载,对吗?)。我已经验证用户可以通过 ForceExplorer 连接并查看自定义字段。但是当我运行上面的代码时,它会连接但只返回以下内容:

SObject Object ( [type] => Contact__c [fields] => [Id] => a )

我没有收到任何错误、无效字段错误等,但我一生都无法弄清楚为什么这不起作用。

我在这里看到了这个示例,但它似乎特定于 Enterprise vs Partner,并且每次更改自定义字段时都需要下载最新的 enterprise.wsdl。

任何指针?

【问题讨论】:

    标签: php salesforce


    【解决方案1】:

    我相信,问题与我如何解析返回的数据有关。我现在没有将返回的数据输入到 SObject 中,而是直接访问它:

    try {
      $mySforceConnection = new SforcePartnerClient();
      $mySoapClient       = $mySforceConnection->createConnection(API_PATH . '/soapclient/partner.wsdl');
      $mylogin            = $mySforceConnection->login(API_USER, API_PASS . API_SECURITY_TOKEN);
    
      $query = 'SELECT C.Id, C.Full_Name__c
                FROM Contact__c C'; 
      $result = $mySforceConnection->query($query);
    
      for($i = 0; $i < count($result->records); $i++) {
        print_r($result->records[$i]->fields->Full_Name__c); 
      }
    } catch(Exception $e) {
      print_r($e);
    }
    

    【讨论】:

    • 很高兴这对您有所帮助,但我认为这不是答案。我正在执行结果的 print_r 并且我的自定义字段没有显示。 WSDL 也会更新。嗯
    • ini_set('soap.wsdl_cache_enabled', '0');刚刚解决了我的问题!
    【解决方案2】:
    ini_set('soap.wsdl_cache_enabled', '0');
    

    它成功了。

    【讨论】:

    • 它解决了旧的WSDL文件(没有所有新创建/更新的对象和字段)被系统缓存的问题。多亏了这一点,它强制应用程序使用新更新的 WSDL 文件,从而允许使用自上次缓存版本以来的新字段和对象。
    • 谢谢!!我花了最后 2 个小时试图弄清楚为什么某些字段可以在 WHERE 条件下使用但没有显示在结果中。这立即修复了它。添加到我的标准代码头中。
    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2023-03-03
    • 2015-06-10
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多