Mehrere Parent-Tables für ein DCA?
Hallo zusammen,
ich stehe zurzeit vor einem kleinen Problem, das sich aus Sicht der Datenbank relativ einfach realisieren lässt, weiß aber nicht wie ich es in der Contao-Logik abbilden kann.
Ich habe das Event-Modul um ein Bestellsystem für kostenlose Eintrittskarten erweitert. Diese werden jetzt in einer Kind-Tabelle von 'tl_calendar_events' gespeichert. Sie heißt 'tl_calendar_tickets' und beinhaltet folgende Felder.
Dargestellt wird das Ganze nun im Mode 4.
PHP-Code:
$GLOBALS['TL_DCA']['tl_calendar_tickets'] = array
(
// Config
'config' => array
(
'dataContainer' => 'Table',
'ptable' => 'tl_calendar_events',
'sql' => array
(
'keys' => array
(
'id' => 'primary',
'pid' => 'index',
'member' => 'index'
)
)
),
// List
'list' => array
(
'sorting' => array
(
'mode' => 4,
'disableGrouping' => true,
'headerFields' => array('title', 'startDate', 'availableSeats'),
'header_callback' => array('tl_calendar_tickets', 'header_callback'),
'panelLayout' => 'filter;sort,search,limit',
'child_record_callback' => array('tl_calendar_tickets', 'child_record_callback')
),
'global_operations' => array
(
'all' => array
(
'label' => &$GLOBALS['TL_LANG']['MSC']['all'],
'href' => 'act=select',
'class' => 'header_edit_all',
'attributes' => 'onclick="Backend.getScrollOffset()" accesskey="e"'
)
),
'operations' => array
(
'edit' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['edit'],
'href' => 'act=edit',
'icon' => 'edit.gif'
),
'delete' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['delete'],
'href' => 'act=delete',
'icon' => 'delete.gif',
'attributes' => 'onclick="if(!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\'))return false;Backend.getScrollOffset()"'
),
'pdf' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_events']['pdf'],
'href' => 'key=pdf',
'icon' => '/system/modules/tickettool/assets/pdf.png'
),
)
),
// Palettes
'palettes' => array
(
'default' => '{tickets_legend},pid,member,amount'
),
// Fields
'fields' => array
(
'id' => array
(
'sql' => "int(10) unsigned NOT NULL auto_increment"
),
'pid' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_tickets']['pid'],
'foreignKey' => 'tl_calendar_events.id',
'options_callback' => array('tl_calendar_tickets','pid_options_callback'),
'inputType' => 'select',
'sql' => "int(10) unsigned NOT NULL default '0'",
'eval' => array('mandatory'=>true,'chosen'=>true,'includeBlankOption'=>true,'tl_class'=>'w50'),
'relation' => array('type'=>'belongsTo', 'load'=>'eager')
),
'tstamp' => array
(
'sql' => "int(10) unsigned NOT NULL default '0'"
),
'member' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_tickets']['member'],
'options_callback' => array('tl_calendar_tickets','member_options_callback'),
'inputType' => 'select',
'eval' => array('mandatory'=>true,'chosen'=>true,'includeBlankOption'=>true,'tl_class'=>'w50'),
'sql' => "int(10) unsigned NOT NULL"
),
'amount' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_calendar_tickets']['amount'],
'inputType' => 'text',
'eval' => array('mandatory'=>true,'rgxp'=>'natural','tl_class'=>'w50'),
'sql' => "int(4) unsigned NULL"
)
)
);
Das funktioniert auch soweit wunderbar. Anhand der Event-Id kann ich mir eine Liste ausgeben lassen, die die bestellten Tickets ausgibt.
Nun möchte ich zusätzlich eine Liste in Contao ausgeben, die alle Tickets anhand einer Mitglieds-ID ausgibt, die ebenfalls in der Tabelle 'tl_calendar_tickets' gespeichert wird. Nun ist mir nicht ganz klar, wie ich den bestehenden DCA anpasse bzw. einen neuen DCA anlege, ohne extra eine zusätzliche Tabelle zu erzeugen zu müssen, die die umgekehrte Zuordnung beinhaltet.
Ich habe schon etwas mit 'filter' experimentiert, habe es aber nicht geschafft, 'pid' zu entfernen, sodass ich lediglich nach 'member' suche.
PHP-Code:
'filter' => array(array('member=?',Input::get('member')))
Wie generiere ich mir hier am besten die Liste, in der die Tickets anhand der Member-ID aufgeführt werden?
Vielen Dank und beste Grüße,
Dennis