Ошибка Typo3: отсутствует карта ColumnMap для свойства

Я использую Typo3 версии 8.7.8 и разрабатываю расширение. Две таблицы «auftrag» и «verstorbener» связаны соотношением 1: n. Я пытаюсь найти поле в таблице «версторбенер» в репозитории «auftrag». Связь обоих необходима.

Если я попытаюсь выполнить следующий запрос, я получаю сообщение об ошибке «ColumnMap для свойства" verstorbener "класса" ... \ Auftrag "отсутствует."

$name = "Mustermann";
		
$query->matching(
			$query->logicalAnd(
      $query->equals('verstorbener.nachname', $name)
			)
		);

Как я могу решить эту проблему? Если вам нужно больше информации, не стесняйтесь спрашивать об этом.

Изменить - соответствующий код TCA поля "verst_id" в "auftrag", который содержит UID "verstorbener":

    'verst_id' => [
        'exclude' => true,
        'label' => 'LLL:EXT:.../locallang_db.xlf:auftrag.verst_id',
        'config' => [
            'type' => 'inline',
            'foreign_table' => 'verstorbener',
            'foreign_field' => 'uid',
            'minitems' => 0,
            'maxitems' => 1,
            'appearance' => [
                'collapseAll' => 0,
                'levelLinksPosition' => 'top',
                'showSynchronizationLink' => 1,
                'showPossibleLocalizationRecords' => 1,
                'showAllLocalizationLink' => 1
            ],
        ],
    ],

Изменить - это объектная модель

/**
 * verstId
 *
 * @var \...\Domain\Model\Verstorbener
 */
protected $verstId = null;

/**
 * Returns the verstId
 *
 * @return \...\Domain\Model\Verstorbener $verstId
 */
public function getVerstId()
{
    return $this->verstId;
}

/**
 * Sets the verstId
 *
 * @param \...\Domain\Model\Verstorbener $verstId
 * @return void
 */
public function setVerstId(\...\Domain\Model\Verstorbener $verstId)
{
    $this->verstId = $verstId;
}

person Florian Mogge    schedule 10.11.2017    source источник
comment
У вас есть поле verstorbener в вашей таблице auftrag и конфигурация TCA? Убедитесь, что вы можете добавлять записи из таблицы verstorbener в вашу таблицу auftrag в бэкэнде. Затем, пожалуйста, опубликуйте свой фрагмент TCA, как мы увидим, как названы ваши поля.   -  person jokumer    schedule 10.11.2017
comment
У меня есть поле с именем verst_id, которое содержит uid из таблицы verstorbener.   -  person Florian Mogge    schedule 10.11.2017
comment
Затем вы должны использовать $ query- ›equals ('verst_id.nachname', $ name) в своих классах / домене / репозитории / AuftragRepository   -  person jokumer    schedule 10.11.2017
comment
Кажется, я получаю ту же ошибку: ColumnMap для свойства verst_id класса ... \ Domain \ Model \ Auftrag отсутствует.   -  person Florian Mogge    schedule 13.11.2017
comment
Потому что в модели нет $ verstId   -  person Georg Ringer    schedule 16.11.2017
comment
В модели есть верстид. Я разместил кодовые строки, которые написал, чтобы включить verstId.   -  person Florian Mogge    schedule 17.11.2017


Ответы (2)


Я решил проблему. Похоже, что в кеше Typo3 лежали какие-то старые данные. Очистка кеша в бэкэнде или в установщике не помогла. Мне пришлось вручную удалить и переустановить расширение.

person Florian Mogge    schedule 23.11.2017
comment
У меня такая же проблема (но с m: n), но удаление и повторная установка не решила проблему. Вы что-нибудь еще делали? - person James; 21.09.2018

Я столкнулся с этой проблемой, когда обновлял расширение с Typo3 v6 до Typo3 v8. Механизм включения файлов конфигурации TCA был изменен, поэтому файлы в /Configuration/TCA/ должны быть названы в соответствии с именем расширения. Например: tx_extension_domain_model_auftrag.php Файл конфигурации TCA состоит только из возвращаемого массива, не более $TCA['tx_extension_domain_model_auftrag']!

Если в вашем ext_tables.php есть конфигурация TCA ctrl, объедините ее с соответствующими файлами TCA и удалите определение dynamicConfigFile!

Надеюсь, это поможет :)

person Tim S    schedule 30.07.2018