Как указать внешние таблицы для атрибутов, определенных в подклассах, при использовании наследования одной таблицы в Typo3 9.5?
У меня есть наследование классов, определенное в ext_typoscript_setup.txt:
config.tx_extbase.persistance.classes {
MyProject\Base { mapping {
tablename = tx_myproject_base
subclasses = {
1 = MyProject\Derived
}
}}
MyProject\Derived { mapping {
tablename = tx_myproject_base
recordType = 1
columns = {
choice.mapOnProperty = selection
}
}}
MyProject\Choice { mapping {
tablename = tx_myproject_choice
}}
}
В Configuration / TCA / tx_myproject_base.php у меня есть
return [
'ctrl' => ['type' => 'subclass'],
'columns' => [
// some fields of the base type
// and now the fields of the derived type
'choice' => [
'config' => [
'type' => 'select',
'foreign_table' => tx_myproject_choice,
'size' => 1,
'minitems' => 0, 'maxitems' => 1,
'renderType' => 'selectSingle',
]
]]
];
Так что у Производных объектов есть внешний ключ для выбора, называемый выбором в базе данных и выбором в php.
Когда я делаюsetOrderings ('selection.ranking' => DESCENDING) в контроллере, я получаю ошибку
The relation information for property "selection" of class "MyProject\Derived" is missing.
В выводе отладки я вижу, что поле правильно сопоставлено с полем выбора, но информация Foreign_tableотсутствует.
Я предполагаю, что проблема в том, что у меня есть конфигурация TCA для подкласса в файле PHP для базовой таблицы, но я не знаю, как это исправить.
Как я могу заставить Extbase понять, что поле подтипа является ключом к сторонней модели?