suiteCRM中的JOIN子查询错误40,("name":"Access Denied","number":40,"description":"You do not have access")
JOIN subquery in suiteCRM Error 40, ("name":"Access Denied","number":40,"description":"You do not have access")
使用与 sugarCRM 连接的 suiteCRM 查询,我需要检索所有具有特定用户和客户 ID 的机会,因为客户 ID (account_id) 不可查询(至少不能直接查询)。
所以这意味着我不能使用像这样的语法:
session: await CRMAuth.getSession(),
modules: CRM_MODULES.OPPORTUNITY,
query: `assigned_user_id = '${uid}' AND account_id = '${client_id}'`,
order_by: 'date_modified DESC',
offset: 0,
select_fields: [
'id',
'name',
],
link_name_to_fields_array: [],
max_results: 100,
deleted: false,
但是我应该有这样的查询:
session: await CRMAuth.getSession(),
modules: CRM_MODULES.OPPORTUNITY,
query: `opportunities.assigned_user_id = '${uid}' AND opportunities.id IN (
SELECT opportunity_id FROM accounts_opportunities r
JOIN accounts a ON (r.account_id = a.id)
WHERE a.id = '${account_id}'
AND r.deleted=0 and a.deleted=0)`,
order_by: 'date_modified DESC',
offset: 0,
select_fields: [
'id',
'name',
],
link_name_to_fields_array: [],
max_results: 100,
已删除:错误,
我尝试了这个的不同变体,比如 modules/tables 名称中的大写字母,并在“r”、“a”之前添加 AS(甚至我用全名替换了它们)。我也尝试了更简单的查询,但我仍然遇到同样的错误。
同时查看类似的问题,我可以确定这不是会话问题,而是语法问题。
我的 2 个错误是:
- 颠倒关联模块
- 使用get_entry_list方法代替get_relationships(此方法需要不同的参数)
所以我最终得到了这个结构
let response = await CRM(CRM_METHODS.GET_RELATIONSHIPS, {
session: await CRMAuth.getSession(),
module_name: CRM_MODULES.ACCOUNTS,
module_id: '${client_id}',
link_field_name: `opportunities`,
related_module_query:`opportunities.assigned_user_id = '${uid}'`,
related_fields: [*the fields i want*],
related_module_link_name_to_fields_array:[],
deleted: 0,
});
小心:模块(机会、帐户等)没有 ID,“module_id”字段是您正在使用的记录的 ID,在我的例子中是 ID我的客户。
这给我带来了特定用户为特定客户创造的所有机会
使用与 sugarCRM 连接的 suiteCRM 查询,我需要检索所有具有特定用户和客户 ID 的机会,因为客户 ID (account_id) 不可查询(至少不能直接查询)。
所以这意味着我不能使用像这样的语法:
session: await CRMAuth.getSession(),
modules: CRM_MODULES.OPPORTUNITY,
query: `assigned_user_id = '${uid}' AND account_id = '${client_id}'`,
order_by: 'date_modified DESC',
offset: 0,
select_fields: [
'id',
'name',
],
link_name_to_fields_array: [],
max_results: 100,
deleted: false,
但是我应该有这样的查询:
session: await CRMAuth.getSession(),
modules: CRM_MODULES.OPPORTUNITY,
query: `opportunities.assigned_user_id = '${uid}' AND opportunities.id IN (
SELECT opportunity_id FROM accounts_opportunities r
JOIN accounts a ON (r.account_id = a.id)
WHERE a.id = '${account_id}'
AND r.deleted=0 and a.deleted=0)`,
order_by: 'date_modified DESC',
offset: 0,
select_fields: [
'id',
'name',
],
link_name_to_fields_array: [],
max_results: 100, 已删除:错误,
我尝试了这个的不同变体,比如 modules/tables 名称中的大写字母,并在“r”、“a”之前添加 AS(甚至我用全名替换了它们)。我也尝试了更简单的查询,但我仍然遇到同样的错误。
同时查看类似的问题,我可以确定这不是会话问题,而是语法问题。
我的 2 个错误是:
- 颠倒关联模块
- 使用get_entry_list方法代替get_relationships(此方法需要不同的参数)
所以我最终得到了这个结构
let response = await CRM(CRM_METHODS.GET_RELATIONSHIPS, {
session: await CRMAuth.getSession(),
module_name: CRM_MODULES.ACCOUNTS,
module_id: '${client_id}',
link_field_name: `opportunities`,
related_module_query:`opportunities.assigned_user_id = '${uid}'`,
related_fields: [*the fields i want*],
related_module_link_name_to_fields_array:[],
deleted: 0,
});
小心:模块(机会、帐户等)没有 ID,“module_id”字段是您正在使用的记录的 ID,在我的例子中是 ID我的客户。
这给我带来了特定用户为特定客户创造的所有机会