SugarCRM - 関連テーブルの拡張したカラムの値をサブパネルに表示する

#php, #subpanel, #sugarcrm

SugarCRMネタ。

モジュール同士の関連を管理する中間テーブルにカラムを拡張し、関連のサブ情報を持たせることがある。今回はその拡張したカラムの値をサブパネルに表示するというお話。

一覧のデータを取得する場合、SugarBeancreate_new_list_query()でSQLが生成されるので、ここをオーバーライドしてサブパネル用にSQLを拡張する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// 省略
function create_new_list_query($order_by, $where, $filter = array(), $params = array(), $show_deleted = 0, $join_type = '', $return_array = false, $parentbean = null, $singleSelect = false, $ifListForExport = false) {
$query = parent::create_new_list_query($order_by, $where, $filter, $params, $show_deleted, $join_type, $return_array, $parentbean, $singleSelect, $ifListForExport);
if ( strtolower($GLOBALS['app']->controller->action) === 'detailview' ||
strtolower($GLOBALS['app']->controller->action) === 'subpanelviewer' ) {
$query['select'] .= " ,rel_table.ext_col ext_col";
}
return $query;
}
// 省略

create_new_list_queryメソッドは、ListViewの時も呼ばれるので、actionを限定する。サブパネルの場合はDetailViewSubPanelViewerのactionが設定されている。

あとは、取得した値を表示する入れ物をnon-dbフィールドで作成し、配置すればよい。