如何根据链接模块来完善休息查询



我正在尝试获取所有没有关联文档的帐户。

这就是我的想法:

$parameters = array(
            'session' => $this->getSessionId(),
            'module_name' => 'Accounts',
            'query' => "accounts.id NOT IN (SELECT DISTINCT account_id FROM documents_accounts)",
);

,但是当然不起作用。我得到一个"访问拒绝"错误(40)。

理想情况下,我想通过查询没有给定类型的文档的帐户来进一步过滤。例如:

getAccountsWithout('contracts');
getAccountsWithout('quote1');
...

可能是您无法正确验证REST API。或者您无法正确提供该方法所需的内容。

如果不是问题。一种解决方案是创建客户版本/v4_1。以便您可以添加自己的自定义呼叫。

可以通过复制V4_1目录来实现这一目标,从而为其提供一个v4_1_1的名称。

重命名以下内容:

  • sugarwebserviceimplv4_1.php to sugarwebserviceimplv4_1_1.php
  • sugarwebserviceutilv4_1.php to sugarwebserviceimplv4_1_1.php

将类签名更改为:

sugarwebserviceimplv4_1:

class SugarWebServiceImplv4_1_1 extends SugarWebServiceImplv4_1

sugarwebserviceimplv4_1:

class SugarWebServiceUtilv4_1_1 extends SugarWebServiceUtilv4_1

更改要求/包括路径:

  • registry.php rest.php
  • soap.php
  • sugarwebserviceimplv4_1_1.php
  • sugarwebserviceimplv4_1_1.php

以便他们现在指向4_1_1目录。

在SugarWebServiceImplv4_1.1.php中实现一种方法。

function get_without_documents($session, $module_name = 'accounts', $start = 1, $offset = 20) {
        $output_list = array();
        $db = DBManagerFactory::getInstance();
        // just for example
        $sql_query = "SELECT a.id FROM accounts a WHERE a.id NOT IN (SELECT DISTINCT account_id FROM documents_accounts)";
        $result = $db->limitQuery($sql_query, $start, $offset,false);
        while(($row = $db->fetchByAssoc($result)) != null){
          $output_list[] = $row['id'];
        }
        return array(
            'result_count'=> count($output_list),
            'next_offset' => $offset + $start,
            'entry_list' => $output_list,
        );
    }

最终注册该方法,并在registry.php和引用URL中进行类型,以便使用v4_1_1。

最新更新