我试图获取所有没有相关文档的帐户。
这就是我的想法:
$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');
...
答案 0 :(得分:0)
可能是您没有使用REST API正确进行身份验证。或者您没有正确提供方法调用所需的内容。
如果那不是问题。一种解决方案是创建service / v4_1的客户版本。这样您就可以添加自己的自定义调用。
这可以通过复制v4_1目录来实现,并为其命名,例如v4_1_1。
重命名以下内容:
将班级签名更改为:
SugarWebServiceImplv4_1:
class SugarWebServiceImplv4_1_1 extends SugarWebServiceImplv4_1
SugarWebServiceImplv4_1:
class SugarWebServiceUtilv4_1_1 extends SugarWebServiceUtilv4_1
更改以下内容中的require / include路径:
以便他们现在指向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中的类型和引用网址,以便它使用v4_1_1。