Использование подзапроса для поиска во всплывающем окне

Я использую 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'

0

Решение

Мне пришлось настроить view.popup.php для модуля и застревать в условии, если поиск выполняется в $ popupMeta [‘whereStatement’] в display ().

 if(!empty($_REQUEST['mode']) && $_REQUEST['mode']=='MultiSelect_fp')

{
$ _REQUEST [‘mode’] = ‘MultiSelect’;

$popupMeta['whereStatement'] .= (!empty($popupMeta['whereStatement']) ? ' AND' : '')." ((contacts.id IN (select frp_fundraisingprogram_contacts_1contacts_idb from (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 '".$_REQUEST['metadata']."') par_med_cond_derived))) AND contacts.deleted=0 ";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]