Typo3 9.5 подклассы и внешние таблицы - PullRequest
0 голосов
/ 16 апреля 2019

Как указать внешние таблицы для атрибутов, определенных в подклассах, при использовании наследования одной таблицы в 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 понять, что поле подтипа является ключом к сторонней модели?

...