我正在使用 SugarCrm CE 6.5.20,它不允许从具有多对多关系的相关模块中进行搜索。但这可以通过添加一个表示您的关系的自定义相关字段然后在 SearchFields.php 中使用自定义子查询来克服,如下所示:
'par_med_cond' =>
array (
'query_type' => 'default',
'operator' => 'subquery',
subquery' => 'SELECT spsmc.frp_fundraisingprogram_contacts_1contacts_idb FROM frp_fundraisingprogram_contacts_1_c spsmc LEFT JOIN frp_fundraisingprogram smc ON spsmc.frp_fundraisingprogram_contacts_1frp_fundraisingprogram_ida = smc.id WHERE smc.deleted =0 AND spsmc.deleted =0 AND smc.name LIKE',
'db_field' =>
array (
0 => 'id',
),
),
这适用于普通的列表视图高级搜索面板,但在将字段添加到弹出视图搜索时不起作用。
它甚至根本没有在弹出窗口中添加子查询。这是失败的查询:
SELECT contacts.id ,contacts_cstm.contactkeyhost_c, LTRIM(RTRIM(CONCAT(IFNULL(contacts.first_name,''),' ',IFNULL(contacts.last_name,'')))) as name, contacts.first_name , contacts.last_name , contacts.salutation , accounts.name account_name, jtl0.account_id account_id, contacts.profile_ref , contacts.assigned_user_id FROM contacts LEFT JOIN contacts_cstm ON contacts.id = contacts_cstm.id_c LEFT JOIN accounts_contacts jtl0 ON contacts.id=jtl0.contact_id AND jtl0.deleted=0
LEFT JOIN accounts accounts ON accounts.id=jtl0.account_id AND accounts.deleted=0
AND accounts.deleted=0 where (( par_med_cond like 'mtest1%' )) AND contacts.deleted=0 ORDER BY name ASC LIMIT 0,21 - Unknown column 'par_med_cond' in 'where clause'