Bug #79294
closedPersisting Traversable DomainObjectInterface broken
100%
Description
Currently objects which implement the Traversable
interface are always persisted as CSV of their values after iterating. This change introduced this change of behavior with TYPO3 7.0.0. This is broken in various ways:
- The type of the relation is ignored which could be e.g.
ColumnMap::RELATION_HAS_ONE
, thus multivalue does not make sense. - If an object implements
DomainObjectInterface
it must always be persisted using its identifier.
While I'm not sure how to handle the first case the second one should be fixed right away since it breaks persistence of objects which implement both Traversable
as well as DomainObjectInterface
Files
Updated by Gerrit Code Review about 8 years ago
- Status changed from In Progress to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/51287
Updated by Gerrit Code Review about 8 years ago
Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/51287
Updated by Mathias Brodala about 8 years ago
- File test_traversable.zip test_traversable.zip added
Here's a test extension to demonstrate the issue. It contains a model Main
and has one property pointing to a Related
model which implements Traversable
(through IteratorAggregate
and a Generator
).
When running the typo3/cli_dispatch.phpsh extbase test:persisttraversabledomainobject
command, a row is added to each table, but the related
field of tx_testtraversable_domain_model_main
contains 0
instead of the UID of the newly inserted tx_testtraversable_domain_model_related
row.
Updated by Gerrit Code Review about 8 years ago
Patch set 1 for branch TYPO3_7-6 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/51446
Updated by Mathias Brodala about 8 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset 9378ce8b59ca3747a62260373251d2b45f61591e.