SalesForce.com: получение пользовательских полей через PHP - PullRequest
7 голосов
/ 20 апреля 2011

У меня есть простой пользовательский объект контакта (с именем 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 ]

4 голосов
/ 17 мая 2011

Я понял, я думаю, проблема связана с тем, как я анализировал возвращаемые данные.Вместо того, чтобы передавать возвращенные данные в 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);
}
3 голосов
/ 28 июля 2014
ini_set('soap.wsdl_cache_enabled', '0');

Это делает трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...