SOAP 4 set_relationship不起作用

时间:2013-08-30 14:15:42

标签: php soap sugarcrm

在与get_entry_list争夺20多个条目之后,我现在正尝试使用SugarCRM 6.5上的SOAP API来设置两个元素之间的关系,这些元素是从用户土地网站上的表单创建的。

set_relationship方法在开发者博客中描述如下:

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

所以这里是处理请求的代码,假设代码的另一部分处理安全性。

$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包含failed等于1)。所以这不是连接问题等。

谈到这种关系,来自devblog的一个人说

  • 两个模块之间必须存在关系
  • 模块中至少有一个related field处理关系,你可以在模块的vardefs.php
  • 中找到它的名字。

我有

  • One-to-one模块与product_registerproducts_versionning
  • 之间的resellers关系
  • 每个相关模块related field中的product_register

我可能缺少什么?

1 个答案:

答案 0 :(得分: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;
        }