Hallo zusammen,
ich habe eigene 2 Kategorien programmiert und funktioniert soweit gut.
Ich habe jetzt aber folgende Probleme:
-
Eine von 2 Kategorien lässt sich nicht beim Reportmanager erscheinen. Also ist nicht auf der Liste...
-
Die 2. Kategorie hat Attributen mit Multi-Value, also dialog_plus mit "isys_cmdb_dao_category_pattern::multiselect()"
Hier bekomme ich immer eine Fehlermeldung, wenn ich versuche, einen Report zu erstellen. Unknown column 'j.isys_catg_servicebook_list_2_isys_catg_svb_ori' in 'field list'
Woran liegt das Problem?
Wie kann ich gespeicherte Werten ausgeben?
Unten Code
protected function properties()
{
return [
'orientation' => array_replace_recursive(isys_cmdb_dao_category_pattern::multiselect(), [
C__PROPERTY__INFO => [
C__PROPERTY__INFO__TITLE => 'LC__CMDB__CATG_SERVICEBOOK__ORIENTATION',
C__PROPERTY__INFO__DESCRIPTION => 'Orientation'
],
C__PROPERTY__DATA => [
C__PROPERTY__DATA__FIELD => 'isys_catg_servicebook_list__id',
C__PROPERTY__DATA__TABLE_ALIAS => 'service_orientation',
C__PROPERTY__DATA__SOURCE_TABLE => 'isys_catg_svb_ori',
C__PROPERTY__DATA__REFERENCES => [
'isys_catg_servicebook_list_2_isys_catg_svb_ori',
'isys_catg_servicebook_list__id'
],
C__PROPERTY__DATA__SELECT => idoit\Module\Report\SqlQuery\Structure\SelectSubSelect::factory(
'SELECT ori.isys_catg_svb_ori__title
FROM isys_catg_servicebook_list sel
INNER JOIN isys_catg_servicebook_list_2_isys_catg_svb_ori AS sercice2 ON sercice2.isys_catg_servicebook_list__id = sel.isys_catg_servicebook_list__id
INNER JOIN isys_catg_svb_ori AS ori ON ori.isys_catg_svb_ori__id = sercice2.isys_catg_svb_ori__id',
'isys_catg_servicebook_list',
'sel.isys_catg_servicebook_list__id',
'sel.isys_catg_servicebook_list__isys_obj__id',
'sel.isys_catg_servicebook_list__id',
'',
idoit\Module\Report\SqlQuery\Structure\SelectCondition::factory([]),
idoit\Module\Report\SqlQuery\Structure\SelectGroupBy::factory(['isys_catg_servicebook_list__isys_obj__id'])
),
C__PROPERTY__DATA__JOIN => [
idoit\Module\Report\SqlQuery\Structure\SelectJoin::factory(
'isys_catg_servicebook_list_2_isys_catg_svb_ori',
'LEFT',
'isys_catg_servicebook_list__id',
'isys_catg_servicebook_list_2_isys_catg_svb_ori',
'sel2',
'sel2ori',
'sel2ori'
),
idoit\Module\Report\SqlQuery\Structure\SelectJoin::factory(
'isys_catg_svb_ori',
'LEFT',
'isys_catg_svb_ori__id',
'isys_catg_svb_ori__id',
'sel',
'selori',
'selori'
),
idoit\Module\Report\SqlQuery\Structure\SelectJoin::factory(
'isys_catg_servicebook_list',
'LEFT',
'isys_catg_servicebook_list__isys_obj__id',
'isys_obj__id'
)
]
],
C__PROPERTY__UI => [
C__PROPERTY__UI__ID => 'C__CATG_SERVICEBOOK_ORIENTATION',
C__PROPERTY__UI__PARAMS => [
'type' => 'f_popup',
'p_strPopupType' => 'dialog_plus',
'p_strTable' => 'isys_catg_svb_ori',
'placeholder' => isys_application::instance()->container->get('language')
->get('LC__UNIVERSAL__CHOOSEN_PLACEHOLDER'),
'multiselect' => true
],
C__PROPERTY__UI__DEFAULT => null
],
C__PROPERTY__PROVIDES => [
C__PROPERTY__PROVIDES__REPORT => true,
C__PROPERTY__PROVIDES__LIST => false,
C__PROPERTY__PROVIDES__SEARCH => true,
C__PROPERTY__PROVIDES__VALIDATION => false,
C__PROPERTY__PROVIDES__MULTIEDIT => true
],
C__PROPERTY__FORMAT => [
C__PROPERTY__FORMAT__CALLBACK => [
'isys_export_helper',
'dialog_multiselect'
]
]
])
protected function dynamic_properties()
{
return [
'_orientation' => new DynamicProperty(
'LC__CMDB__CATG_SERVICEBOOK__ORIENTATION',
'isys_catg_servicebook_list__id',
'isys_catg_servicebook_list',
[
$this,
'dynamic_property_callback_ori'
]
),
];
}
public function dynamic_property_callback_ori($p_row)
{
$l_dao = isys_cmdb_dao_category_g_servicebook::instance(isys_application::instance()->database);
$l_res = $l_dao->retrieve('SELECT ori.isys_catg_svb_ori__title AS val
FROM isys_catg_servicebook_list AS svcb
INNER JOIN isys_catg_servicebook_list_2_isys_catg_svb_ori AS svcb2ori ON svcb2ori.isys_catg_servicebook_list__id = svcb.isys_catg_servicebook_list__id
INNER JOIN isys_catg_svb_ori AS ori ON ori.isys_catg_svb_ori__id = svcb2ori.isys_catg_svb_ori__id
WHERE svcb.isys_catg_servicebook_list__id = ' . $l_dao->convert_sql_id($p_row['isys_catg_servicebook_list__id']));
$l_return = isys_tenantsettings::get('gui.empty_value', '-');
if ($l_res->num_rows() > 0) {
$l_return = '';
while ($l_row = $l_res->get_row()) {
$l_return .= $l_row['val'] . ', ';
}
$l_return = rtrim($l_return, ', ');
}
return $l_return;
}
Danke im Voraus