2017-07-25 36 views
0

我是TYPO3的新手,我没有太多的经验。我正在处理官方文档。 TYPO3版本7.6 LTS。TYPO3 IRRE 1:n删除子记录不起作用

我创建了1:n关系。几乎一切正常,子项保存并加载没有任何问题。不过,我有删除问题。当我删除父母实体时,其子女不是删除,这是一个真正的痛苦。

下面是两个表我的TCA配置(我已删除无关列):

tx_myext_domain_model_item父表:


<?php 

$ll = 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:'; 

return [ 
    'ctrl' => [ 
     'title' => $ll . 'basket.item', 
     'label' => 'title', 
     'tstamp' => 'updated_at', 
     'crdate' => 'created_at', 
     'cruser_id' => 'user_id' 
    ], 
    'interface' => [ 
     'showRecordFieldList' => '' 
    ], 
    'columns' => [ 
     'pid' => [ 
      'label' => $ll . 'pid', 
      'config' => [ 
       'type' => 'passthrough', 
      ] 
     ], 
     // ... 
     'documents' => [ 
      'label' => $ll . 'item.documents', 
      'config' => [ 
       'readOnly' => 1, 
       'type' => 'inline', 
       'foreign_table' => 'tx_myext_domain_model_document', 
       'foreign_field' => 'item_id', 
       'behaviour' => [ 
        'enableCascadingDelete' => 1, 
       ] 
      ], 
     ] 
    ] 
]; 

tx_myext_domain_model_document子表:


<?php 

$ll = 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:'; 

return [ 
    'ctrl' => [ 
     'title' => $ll . 'document', 
     'label' => 'item_id', 
     'tstamp' => 'updated_at', 
     'crdate' => 'created_at', 
    ], 
    'interface' => [ 
     'showRecordFieldList' => '' 
    ], 
    'columns' => [ 
     'pid' => [ 
      'label' => $ll . 'pid', 
      'config' => [ 
       'type' => 'passthrough', 
      ] 
     ],  
     // ... 
     'item_id' => [ 
      'label' => $ll . 'item.id', 
      'config' => [ 
       'type' => 'input', 
       'size' => '10', 
       'eval' => 'int', 
      ], 
     ], 
    ], 
]; 

任何人有一个想法我做错了什么?

感谢您的帮助。

回答

1

你是在告诉TCA来查找场“ITEM_ID”的关系

'foreign_field' => 'item_id', 

但这字段用于该项目的ID。 在此字段中,typo3应该存储来自父元素的uid。 尝试在passthrough上设置'item_id'字段并创建一个新元素,并检查数据库是否在字段中存储了来自父项的uid。如果是这种情况,cascadeDelete应该可以工作。 enableCascadingDelete是每默认情况下:)

编辑:
如果你做你的代码里面的东西,你用extbase repositorys删除您需要添加@cascade删除,在您的项目模型的属性文件的对象。下Docs描述:

https://docs.typo3.org/typo3cms/ExtbaseFluidBook/5-Domain/2-implementing-the-domain-model.html#implementing-relationships-between-domain-objects

+0

的事情是,只有通过代码添加文件的项目。我可以看到来自父表格计数器的“文档”字段表现正确。我不希望通过管理面板进行编辑。 – Ventus

+0

如果您使用extbase repositorys删除代码中的对象,则需要将@cascade remove添加到项目模型中的属性文档。 在文档中描述了她: https://docs.typo3.org/typo3cms/ExtbaseFluidBook/5-Domain/2-implementing-the-domain-model.html – Xippo

+0

是的!谢谢@Xippo!我错过了@ @ cascade'注释!我不知道我是如何错过它的。请用这个建议更新你的问题,我会接受它:) – Ventus