SugarCRM:从外部表读取数据

时间:2011-10-05 10:08:37

标签: php sugarcrm

我正在尝试在SugarCRM的自定义列表视图中显示非Sugar表中的数据。目前我在自定义view.list.php文件中运行SQL查询,但这是在列表下方显示数据而不是替换列表视图中的默认查询。

如何使用自定义SQL替换listview中的默认查询?

2 个答案:

答案 0 :(得分:3)

你不需要经历所有这些。

在ModuleBuilder中创建自定义模块时。部署包 编辑vardefs.php和Module_sugar.php并更改table_name以指向新表时。然后,您实际上不必编写任何特殊代码,自定义字段将起作用并为您完成连接。

class CustomModule_sugar extends SugarBean {
var $table_name = 'external_table';

答案 1 :(得分:2)

我设法通过覆盖模块基类中的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; 
    }
}

此方法创建一个在/includes/ListView/ListViewData.php中使用的SQL语句。我给从外部表中选择的字段名称别名以匹配Sugar中设置的字段的名称(比创建或重命名每个字段更容易)。