2011-04-20 4 views
7

Full_Name__c의 단일 필드 (연결 테스트 용)가있는 SalesForce DE 사이트에서 만든 간단한 사용자 정의 연락처 객체 (API 이름은 Contact__c)가 있습니다.SalesForce.com : PHP를 통해 사용자 정의 필드 검색

그때 PHP를 통해, 모든 연락처를 검색하기 위해 특별히이 필드를 시도하고있다 : 나는 비록 파트너 WSDL로 (최신 partner.wdsl을 다운로드 한

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); 
} 

, 그것은 느슨한 타입 및 수행한다 사용자 정의 객체 및/또는 업데이트 된 필드의 생성/추가와 함께 다운로드 할 필요는 없습니다.)? 사용자가 ForceExplorer를 통해 사용자 정의 필드에 연결하고 볼 수 있는지 확인했습니다. 나는 위의 코드를 실행할 때, 그냥 다음 반환하지만 연결 :

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

내가 오류를 받고 있지 않다 잘못된 필드 오류, 등,하지만 내 인생 왜 ISN을 알아낼 수 없습니다 일하고있어.

이 예제는 여기에서 보았지만 Enterprise vs Partner에만 해당되는 것으로 보이며 사용자 정의 필드를 변경할 때마다 최신 enterprise.wsdl을 다운로드해야합니다.

모든 포인터?

답변

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); 
} 
+0

이것이 도움이 되었기 때문에 기쁩니다. 그러나 이것이 대답이라고 생각하지 않습니다. 결과의 print_r을하고 있는데 사용자 정의 필드가 표시되지 않습니다. WSDL도 업데이트됩니다. hmmm –

+3

ini_set ('soap.wsdl_cache_enabled', '0'); 그냥 내 문제가 해결 됐어! –

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

그것은 트릭을 수행합니다.

+0

시스템에 의해 캐시 된 이전 WSDL 파일 (모든 새로 작성/갱신 된 오브젝트 및 필드 제외)의 문제점을 해결합니다. 덕분에 앱이 새로운 업데이트 된 WSDL 파일을 사용하도록 강제하므로 마지막 캐시 된 버전 이후로 새 필드 및 개체를 사용할 수 있습니다. – Romain

관련 문제