SalesForce.com:通过PHP检索自定义字段

时间:2011-04-20 17:08:29

标签: php salesforce

我有一个简单的自定义联系人对象(API名称为Contact__c),我在SalesForce DE网站上创建了一个具有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。

任何指针?

2 个答案:

答案 0 :(得分:4)

想出来我相信,问题与我如何解析正在返回的数据有关。我现在只是直接访问它,而不是将返回的数据提供给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);
}

答案 1 :(得分:3)

ini_set('soap.wsdl_cache_enabled', '0');

它可以解决问题。