SugarCRM: чтение данных из внешней таблицы - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь отобразить данные из не-Sugar таблицы в пользовательском представлении списка в SugarCRM.В настоящее время я выполняю SQL-запрос в настраиваемом файле view.list.php, но он отображает данные под списком, а не заменяет запрос по умолчанию в представлении списка.

Как заменить запрос по умолчаниюв списке с пользовательским SQL?

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

Вам не нужно проходить через все это.

При создании пользовательского модуля в ModuleBuilder. Разверните пакет при редактировании vardefs.php и Module_sugar.php и изменении имени_таблицы, чтобы оно указывало на новую таблицу. Тогда вам на самом деле не нужно писать никакого специального кода, и настраиваемые поля будут работать и завершить соединение для вас.

class CustomModule_sugar extends SugarBean {
var $table_name = 'external_table';
2 голосов
/ 05 октября 2011

Мне удалось решить эту проблему путем переопределения метода create_new_list_query () в базовом классе модуля:

class CustomModule extends CustomModule_sugar {

    function CustomModule(){    
        parent::CustomModule_sugar();
    }


    // this is the method which constructs the default SQL query
    function create_new_list_query($order_by, $where, $filter, $params, $show_deleted, $join_type, $return_array, $parentbean, $singleSelect){ 
        // call the parent method to populate all params - will cause errors/problems elsewhere otherwise
        $ret_array = parent::create_new_list_query($order_by, $where,$filter,$params, $show_deleted,$join_type, $return_array,$parentbean, $singleSelect); 

        // override module sql with custom query
        // alias external field names so they match the fields set up in Sugar
        $ret_array['select'] = 'SELECT primary_id as id, date_added as date_entered, field_name as name, external_notes as notes';
        $ret_array['from'] = ' FROM external_table';

        // update these with appropriate SQL
        $ret_array['where'] = '';
        $ret_array['order_by'] = '';

        return $ret_array; 
    }
}

Этот метод создает инструкцию SQL, которая используется в /include/ListView/ListViewData.php,Я связал имена полей, выбранных из внешней таблицы, с именами полей, настроенных в Sugar (проще, чем создание или переименование каждого поля).

...