Typo3 Error: The ColumnMap for property is missing

Typo3 Error: The ColumnMap for property is missing

我使用的是 Typo3 8.7.8 版,我正在开发一个扩展。 两个 table 的 "auftrag" 和 "verstorbener" 是具有 1:n 关系的连接体。 我尝试在 "auftrag" 的存储库中搜索 table "verstorbener" 中的字段。两者的关系是必要的。

如果我尝试执行以下查询,我会得到错误 "The ColumnMap for 属性 "verstorbener" of class "...\Auftrag" is不见了。”

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

我该如何解决这个问题? 如果您需要更多信息,请随时提出要求。

编辑--"auftrag"中字段"verst_id"的相关TCA代码,包含[=36​​=]的UID:

    '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;
}

我已经解决了这个问题。 似乎在 Typo3 缓存中放置了一些旧数据。 在后端或安装程序中清除缓存没有帮助。 我手动卸载并重新安装了扩展程序。

我在将扩展从 Typo3 v6 升级到 Typo3 v8 时遇到了这个问题。包含 TCA 配置文件的机制已更改,因此 /Configuration/TCA/ 中的文件需要根据扩展名命名。例如:tx_extension_domain_model_auftrag.php TCA配置文件只有一个return数组,没有$TCA['tx_extension_domain_model_auftrag']!

如果您的 ext_tables.php 中有 TCA ctrl 配置,则将其合并到相应的 TCA 文件中并删除 dynamicConfigFile 定义!

希望对您有所帮助:)