Ich habe in meiner custom EntityDefinition ein ManyToManyAssociationField
:
(new ManyToManyAssociationField('assignedProducts', ProductDefinition::class, ProductBadgeAssignedProductsDefinition::class, 'product_badge_id', 'product_id')),
Viele Product-Badges können viele Products haben. Also habe ich noch eine Product Extension hinzugefügt:
class ProductExtension extends EntityExtension
{
public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new ManyToManyAssociationField(
'productBadges',
ProductBadgeDefinition::class,
ProductBadgeAssignedProductsDefinition::class,
'product_id',
'product_badge_id'
))->addFlags(new Inherited())
);
}
public function getDefinitionClass(): string
{
return ProductDefinition::class;
}
}
Meinen Product Badges kann ich auch Produkten zuordnen. Möchte ich jetzt aber ein Produkt speichern, hat der Request /api/_action/sync
einen Error:
An exception occurred while executing '
UPDATE `product` SET `productBadges` = IFNULL(
(
SELECT `kk_product_badge_assigned_products`.`product_id`
FROM `kk_product_badge_assigned_products`
WHERE `kk_product_badge_assigned_products`.`product_id` = `product`.id
AND `kk_product_badge_assigned_products`.`product_version_id` = `product`.version_id
LIMIT 1
),
IFNULL(`product`.parent_id, `product`.id)
)
WHERE `product`.id IN (?, ?)
AND `product`.version_id = ?' with params ["\u00...fa", "\x0f...\x25"]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'productBadges' in 'field list'
Dadurch wird jetzt z.B. availableStock nicht aktualisiert…
Warum will der denn jetzt überhaupt das Feld productBadges
aktualisieren? Das ist doch nur eine Association auf beiden Seiten…