we added a non-db field which pulls data via a custom function, here’s an example
array (
'required' => false,
'name' => 'sales_reps_full_name',
'vname' => 'LBL_SALES_REPS_FULL_NAME',
'type' => 'text',
'massupdate' => 0,
'no_default' => false,
'comments' => '',
'help' => '',
'importable' => 'true',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => '0',
'audited' => false,
'inline_edit' => true,
'reportable' => true,
'unified_search' => false,
'merge_filter' => 'disabled',
'size' => '20',
'studio' => 'visible',
'rows' => '4',
'cols' => '20',
'source' => 'non-db',
'function' =>
array (
'name' => 'CommonUtils::getSalesRepsFullName',
'returns' => 'html',
'include' => 'custom/modules/ODS_Inventory/Utils/CommonUtils.php',
'onListView' => true,
),
),
and the func for getSalesRepsFullName is
class CommonUtils
{
/**
* Возвращаем имена всех брокеров связанных с квартирой, через запятую
* @param $inventory
* @return string|null
*/
static function getSalesRepsFullName($inventory)
{
if (!is_array($inventory) || empty($inventory['ID'])) {
return null;
}
$return = array();
global $db;
$query = "SELECT users_id FROM users_ods_inventory WHERE ods_inventory_id = '{$inventory['ID']}' AND deleted = '0'";
$result = $db->query($query);
while ($row = $db->fetchByAssoc($result)){
$return[] = BeanFactory::getBean('Users',$row['users_id'])->full_name;
}
return implode(', ' , $return);
}
you can then specify the field name in listviewdefs.php like so:
'SALES_REPS_FULL_NAME' =>
array (
'type' => 'currency',
'currency_format' => true,
'studio' => 'visible',
'label' => 'LBL_SALES_REPS_FULL_NAME',
'width' => '10%',
),