Skip to content

Get control of association clone behavior as developer

Get control of association clone behavior as developer ​

INFO

This document represents an architecture decision record (ADR) and has been mirrored from the ADR section in our Shopware 6 repository. You can find the original version here

Context ​

The developer should be able to define, if an association has to be considered or skipped during the cloning of an entity.

Decision ​

The current clone behavior is controlled by the Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\CascadeDelete flag. All associations which are marked with this flag are considered in the clone process. We will add an optional parameter to the flag constructor to disable this behavior.

I already added this flag to the following associations:

  • product.productReviews
    • This association is already overwritten by the administration
  • product.searchKeywords
    • Will be indexed by the product indexer, so we can skip this association in the clone process
  • product.categoriesRo
    • Will be indexed by the product indexer, so we can skip this association in the clone process

An example looks like the following:

(new OneToManyAssociationField('searchKeywords', ProductSearchKeywordDefinition::class, 'product_id'))
    ->addFlags(new CascadeDelete(false)),

Consequences ​

After 6.3 released, the developer can control this behavior by setting \Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\CascadeDelete::$cloneRelevant to false

Was this page helpful?
UnsatisfiedSatisfied
Be the first to vote!
0.0 / 5  (0 votes)