Hallo in die Runde,
ich programmiere gerade eine Extension, die Touren verwaltet. Dazu hier erst einmal mein Model:
/**
* @var int
*/
protected $pid;
/**
* @var string $tourName
*/
protected $tourName;
/**
* "Inquire now" button displayed?
*
* @var bool
*/
protected $hasReservationOption;
/**
* "Book now" button displayed?
*
* @var bool
*/
protected $hasBookingOption;
/**
* tour's date(s)
*
* @var string
*/
protected $tourDate;
/**
* startTime
*
* @var string
*/
protected $startTime;
/**
* endTime
*
* @var string
*/
protected $endTime;
/**
* ticketPriceNormal
* @var float
*/
protected $ticketPriceNormal;
/**
* ticketPriceLeipzigCardCarrier
* @var float
*/
protected $ticketPriceLeipzigCardCarrier;
/**
* ticketPriceStudent
* @var float
*/
protected $ticketPriceStudent;
/**
* ticketPriceDisabled
* @var float
*/
protected $ticketPriceDisabled;
/**
* ticketPriceChild
* @var float
*/
protected $ticketPriceChild;
Dazu gibt es natürlich die entsprechende Tabelle tx_extensionname_domain_model_tour, in der die Datensätze abgespeichert werden, mit Ausnahme des Tournamens (1. Property), für diese gibt es entsprechend auch keine TCA-Definition.
Die Touren werden als ganz normale Seite im Seitenbaum des Backends angelegt auf diesen Seiten jeweils die Datensätze für die Tourtermine (gem. Model) hinterlegt. Das Repository liefert bei Abfrage einer bestimmten Tour für (beispielsweise) einen bestimmten Tag das hier:
0 => NG\ExtensionName\Domain\Model\Tourprototypepersistent entity (uid=2219, pid=216)
pid => 216 (integer)
tourName => NULL
hasReservationOption => TRUE
hasBookingOption => FALSE
tourDate => '2016-08-31' (10 chars)
startTime => '2016-08-31 15:30:00' (19 chars)
endTime => '2016-08-31 17:00:00' (19 chars)
ticketPriceNormal => 14 (double)
ticketPriceLeipzigCardCarrier => 12 (double)
ticketPriceStudent => 12 (double)
ticketPriceDisabled => 12 (double)
ticketPriceChild => 5 (double)
uid => 2219 (integer)
_localizedUid => 2219 (integer)modified
_languageUid => NULL
_versionedUid => 2219 (integer)modified
Alles ok soweit, natürlich fehlt der TOurname. Meine Frage ist, wie ich mir nun per Repository den Namen der Seite aus der "pages"-Tabelle holen kann, als Identifier würde ja die "pid" dienen.
ich habe es bereits mit einem Table Mapping versucht:
persistence {
storagePid = 20 (wird durch das Repository ignoriert)
classes{
NG\ExtensionName\Domain\Model\Tour{
mapping{
tableName = pages
columns{
tourName.mapOnProperty = title
#pid.mapOnProperty = uid
}
}
}
}
}
Problem ist nun wieder, dass Extbase auch alle anderen Spalten auf die pages-Tabelle mappen will, die es dort nicht gibt.
Meine Frage ist nun: Wie schaffe ich es, ein einzelnes Property auf eine fremde Tabelle zu mappen bzw. welchen Trick gäbe es, damit sich das Repo anderweitig den Seitennamen beschafft?
Danke im Voraus
Björn