2014-04-21 4 views
0

연락처의 전화 번호에 전화 형식 수정을 적용했습니다. 이제 사용자가 연락처의 전화 번호를 저장하면 기본 xxxxxxxxxx 대신 (xxx) xxx-xxxx 형식으로 저장됩니다.SugarCRM 전화 번호부 기본 검색

그러나 입력 한 형식 중 하나를 사용하여 레코드를 찾을 수있는 검색을 수행하려고합니다.

'phone_office' => array(
       'query_type'=>'default', 
       'operator' => 'subquery', 
       'subquery' => array(
        'SELECT phone_office FROM accounts WHERE phone_office LIKE "%"', 
        'SELECT phone_office FROM accounts WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phone_office, "+", "") , "-", "") , "(", "") , ")", "") , " ", "") LIKE "%"', 
        'OR' =>true 
        ), 
       'db_field'=>array('phone_office'), 
       'vname' =>'LBL_PHONE_OFFICE', 
     ), 

을하지만 이러한 변경 후, 이것은 단지 응답하지 않는 상태에서 브라우저를두고 사용하여 기본 또는 고급 검색을 발사 : 나는이 변화 /custom/modules/Accounts/metadata/SearchFields.php를 수정했습니다. 분명히 select 문 중 하나만 받아들이도록 설정할 때 '하위 쿼리'에서 배열을 사용할 수 없습니다. 아무도 내가이 문제를 해결하도록 도울 수 있습니까?

답변

1

Arrgh. 초보자 실수. 나는 SELECT 문 내에서 'phone_office'를 'id'로 대체해야했습니다. 다음 구문을 사용해야합니다.

'phone_office' => array(
      'query_type'=>'default', 
      'operator' => 'subquery', 
      'subquery' => array(
       'SELECT id FROM accounts WHERE phone_office LIKE "%"', 
       'SELECT id FROM accounts WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phone_office, "+", "") , "-", "") , "(", "") , ")", "") , " ", "") LIKE "%"', 
       'OR' =>true 
       ), 
      'db_field'=>array('phone_office'), 
      'vname' =>'LBL_PHONE_OFFICE', 
    ), 

이제는 제대로 작동합니다. MySQL에서 작동한다고해서 반드시 SugarCRM에서 작동한다는 것을 의미하지는 않는다는 것을 알았습니다. 도와 줘서 고마워!

1

는 %가 설탕에 의해 추가

'phone_office' => array(
      'query_type'=>'default', 
      'operator' => 'subquery', 
      'subquery' => array(
       'SELECT phone_office FROM accounts WHERE phone_office LIKE ', 
       'SELECT phone_office FROM accounts WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phone_office, "+", "") , "-", "") , "(", "") , ")", "") , " ", "") LIKE ', 
       'OR' =>true 
       ), 
      'db_field'=>array('phone_office'), 
      'vname' =>'LBL_PHONE_OFFICE', 
    ), 

을보십시오. 필드 전화의 경우 modules \ Employees \ metadata \ SearchFields.php를 참조하십시오.

+0

불행히도 "%"가없는 경우에도 여전히 동일한 동작을 나타냅니다. 배열에 넣을 때마다 원하는대로 작동하지 않습니다. 그러나 배열을 사용하지 않고 'Select'문 중 하나만 사용하면 해당 배열을 검색합니다. – JMags1632

+0

phone_office를 모든 곳의 id로 변경하고 두 번째 배열 요소에서 LIKE 다음의 공백을 제거하십시오. 그럼 설탕은 무언가를해야합니다 – Hakulukiam

+0

지금은 모두 좋다. 나는 "phone_office"대신 "id"를 대체했는데 이것이 결과를 얻지 못하는 이유였습니다. LIKE 이후의 공간은 그 뒤에 'db_field'를 연결하기 때문에 문제가되지 않습니다. 공백이 없으면 구문 오류가 발생합니다. – JMags1632