我正在尝试获取所有没有关联文档的帐户。
这就是我的想法:
$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。