我試圖在SugarCRM的自定義列表視圖中顯示非Sugar表中的數據。目前,我正在自定義view.list.php文件中運行SQL查詢,但這是在列表下方顯示數據,而不是替換listview中的默認查詢。SugarCRM:從外部表讀取數據
如何用自定義SQL替換列表視圖中的默認查詢?
我試圖在SugarCRM的自定義列表視圖中顯示非Sugar表中的數據。目前,我正在自定義view.list.php文件中運行SQL查詢,但這是在列表下方顯示數據,而不是替換listview中的默認查詢。SugarCRM:從外部表讀取數據
如何用自定義SQL替換列表視圖中的默認查詢?
我已經設法通過在模塊基類重寫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中設置的字段名稱相匹配(比創建或重命名每個字段更容易)。
你不必經歷所有這些。
在ModuleBuilder中創建自定義模塊時。編輯vardefs.php和Module_sugar.php時,部署程序包 ,並將table_name更改爲指向新表。然後,您實際上不必編寫任何特殊的代碼,並且自定義字段將起作用併爲您完成聯接。
class CustomModule_sugar extends SugarBean {
var $table_name = 'external_table';
您能解釋一下,您在哪些文件中進行了更改以使其正常工作。 – user3286692