2013-08-30 3 views
0

get_entry_list으로 20 개 이상의 항목을 얻으 려다가 SugarCRM 6.5에서 SOAP API를 사용하여 사용자 영역 웹 사이트의 양식에서 만든 두 요소 간의 관계를 설정하려고합니다. . 그래서 여기SOAP 4 set_relationship not working

$response = set_relationship(session, module_name, module_id, link_field_name, related_ids, name_value_list, delete); 

를 코드의 다른 부분이 보안 처리 가정, 상기 요청을 처리하는 코드이다

set_relationship 방법은 DEVS 블로그에 다음과 같이 설명한다.

$values = array( 'id_frame' => $_POST['id_frame'], 
        'id_battery' => $_POST['id_battery'], 
        'reseller' => $_POST['reseller'], 
        'date_purchase' => $_POST['date_purchase'], 
        'products_versionning' => $_POST['product_purchased'], 
        'first_name' => $_POST['first_name'], 
        'last_name' => $_POST['name'], 
        'phone_home' => $_POST['phone'], 
        'email' => $_POST['email'], 
        'primary_address_street' => $_POST['address'], 
        'primary_address_street_2' => $_POST['address2'], 
        'primary_address_street_city' => $_POST['city'], 
        'primary_address_street_postalcode' => $_POST['zip'], 

); 

try{ 
    $prod_register = $soapClient->set_entry(
    $sessid, 
    'myco_product_register', 
    array( array('name' => 'id_frame',       'value' => $values['id_frame']), 
      array('name' => 'id_battery',      'value' => $values['id_battery']), 
      array('name' => 'date_purchase',     'value' => $values['date_purchase']), 
      array('name' => 'first_name',      'value' => $values['first_name']), 
      array('name' => 'last_name',      'value' => $values['last_name']), 
      array('name' => 'phone_home',      'value' => $values['phone_home']), 
      array('name' => 'email',       'value' => $values['email']), 
      array('name' => 'primary_address_street',   'value' => $values['primary_address_street']), 
      array('name' => 'primary_address_street_city',  'value' => $values['primary_address_street_city']), 
      array('name' => 'primary_address_street_postalcode','value' => $values['primary_address_street_postalcode']), 
      array('name' => 'description','value' => "Modèle : " . $values['products_versionning'] . "\nAcheté le " . $values['date_purchase'] . " à " . $values['reseller']), 
     ) 
    ); 

    $client = $soapClient->set_entry(
    $sessid, 
    'Accounts', 
    array( array('name' => 'name',        'value' => $values['first_name'] . ' ' . $values['last_name']), 
      array('name' => 'billing_address_street',   'value' => $values['primary_address_street']), 
      array('name' => 'billing_address_city',    'value' => $values['primary_address_street_city']), 
      array('name' => 'billing_address_postalcode',  'value' => $values['primary_address_street_postalcode']), 
     ) 
    ); 

    $entry_id = $prod_register->id; 

    $relationship_parameters = array(
     "module1" => "myco_product_register", 
     "module1_id" => array($entry_id), 
     "module2" => "myco_products_versionning", 
     "module2_id" => array($values['products_versionning']) 
    ); 


    //Now i'm setting the relationships 
     $response = $soapClient->set_relationship($sessid, "myco_product_register", $entry_id, 
       'myco_products_versionning_id_c', $values['products_versionning'], array(), 0); 

     $response = $soapClient->set_relationship($sessid, "myco_product_register", $entry_id, 
       'myco_resellers_id_c', $values['reseller'], array(), 0); 

set_entry 요청이 작동과 작업 ID를 반환하지만, 관계 작업 아무도 ($responses 1에 해당하는 failed 포함되어 있지 않습니다). 그래서 이것은 연결 문제가 아닙니다.

의 관계에 대해 얘기 상기 devblog 하나 사람

  • 는 관계 처리 모듈에 적어도 하나 related field 있어야만 두 모듈 간의 관계 있어야만했다 누구의 이름 당신은 모듈의 vardefs.php

에서 찾을 수 그리고 난

    이 서로 관련된 모듈의 모듈 product_register 모두 products_versionningproduct_registerresellers
  • related field 사이
  • One-to-one 관계.

무엇이 누락 될 수 있습니까?

답변

0

SugarCRM의 로그 파일을 확인해보십시오. 몇 가지 실수를 찾아야합니다. 이 API를 사용하여 연락처와 계정 간의 관계를 만들고 제대로 작동했습니다. 로그에서 문제의 답을 찾을 수 있습니다.

try { 
     $result = $this->soapClient->set_relationship($this->sessionId, 
       $accountModuleName, $accountId, $relationName, $contactsId); 
     $this->doEvent(self::EVENT_WS_OPERATION_CALL); 

     if ($result->created > 0 && $result->failed === 0) { 
      return true; 
     } else { 
      return false; 
     }