Ich habe jetzt den ProductSubscriper angepasst:
// Clean up configurator settings for parents that no longer have variants using those options
// Filtere Parent-IDs: keine NULLs, keine leeren Strings, nur gültige Hex-Zeichen
$parentIdsFiltered = array_filter($parentIds, fn($id) => !empty($id) && ctype_xdigit($id));if (empty($parentIdsFiltered)) {
// Keine gültigen Parent-IDs → Query komplett überspringen
return;
}// Hex-Strings in Binary konvertieren
$parentIdsBinary = array_map(fn($id) => hex2bin($id), $parentIdsFiltered);// Nur ausführen, wenn Binary-Array nicht leer ist
if (count($parentIdsBinary) === 0) {
return;
}// Query ausführen: Verwaiste configurator_settings löschen
$this->connection->executeStatement(
‚DELETE FROM product_configurator_setting pcs
WHERE pcs.product_id IN (:parentIds)
AND pcs.product_version_id = :versionId
AND NOT EXISTS (
SELECT 1
FROM product_option po
INNER JOIN product p ON p.id = po.product_id AND p.version_id = po.product_version_id
WHERE p.parent_id = pcs.product_id
AND p.version_id = :versionId
AND po.property_group_option_id = pcs.property_group_option_id
AND po.product_version_id = :versionId
)‘,
[
‚parentIds‘ => $parentIdsBinary,
‚versionId‘ => $versionBytes,
],
[
‚parentIds‘ => ArrayParameterType::BINARY,
]
);
KEINE Garantie