Bug #101936
openDuplicate MM records after copy
0%
Description
For TYPO3 11 (and 12) records with a bidirectional MM relations to themselves have duplicate MM records after copying them via DataHandler.
A prominent example would be EXT:news with its two columns related
and related_from
(stripped down to relevant parts):
EXT:news/Configuration/TCA/tx_news_domain_model_news.php:
'related' => [ 'config' => [ 'type' => 'group', 'allowed' => 'tx_news_domain_model_news', 'foreign_table' => 'tx_news_domain_model_news', 'MM_opposite_field' => 'related_from', 'MM' => 'tx_news_domain_model_news_related_mm', ], ], 'related_from' => [ 'config' => [ 'type' => 'group', 'foreign_table' => 'tx_news_domain_model_news', 'allowed' => 'tx_news_domain_model_news', 'MM' => 'tx_news_domain_model_news_related_mm', 'readOnly' => 1, ], ],Scenario:
- Install EXT:news
- Create a folder with 2 news records, one refering to the other (via
related
column) - Copy that folder
Original folder | Copied folder |
---|---|
Expected result: 2nd folder with 2 news records, one refering one time to the other
Actual result: 2nd folder with 2 news records one refering three times to the other
With TYPO3 10 this worked as expected. And since the TCA in news hadn't changed, I assume it's a TYPO3 core issue. Plus I can reproduce it with pages records as well.
Hint: when unsetting the TCA for the related_from
field, it's working flawlessly.
Files
Updated by Philipp Kitzberger 8 months ago
- Subject changed from Duplicate mm records after copy to Duplicate MM records after copy
Updated by Oliver Hader 8 months ago
tt_content
and sys_category
in the core are using the same opposite reference.
Tests at https://github.com/TYPO3/typo3/blob/main/typo3/sysext/core/Tests/Functional/DataScenarios/CategoryOneToOne/Modify/ActionTest.php#L213-L226 could be extended to reflect that better (I remember there had been more tests for MM in the past... hm...)
Updated by Oliver Hader 8 months ago
- Status changed from New to Accepted
Confirmed in TYPO3 v12 & master (90d885c7782f255028148e90509e4686685ef02f)
- create sys_category record "category"
- create tt_content element "test" + reference to sys_category "category"
- duplicate sys_category item "category" + rename clone to "clone"
→ content element has references to categories "category" and "clone"
There should be a new behavior on the opposite side (sys_category) in the example above, that would control whether to clone all references if the opposite record is duplicated.