Merci. Je viens de le tester, j’obtiens une erreur SQL du à une contrainte d’intégritée sur la table order.
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`theliaTest`.`order`, CONSTRAINT `fk_order_cart_id` FOREIGN KEY (`cart_id`) REFERENCES `cart` (`id`))
Dans le fichier RemoveUselessCartEventListeners.php, j'ai modifier les requêtes comme ci-dessous :
if (!$event->getRemoveAll()) {
$sqlRemoveCarts =
"DELETE `cart` FROM `cart`
LEFT JOIN `cart_item` ON ( `cart`.`id` = `cart_item`.`cart_id` )
LEFT JOIN `order` ON ( `order`.`cart_id` = `cart`.`id` )
WHERE `cart`.`UPDATED_AT` <= :startDate AND `cart_item`.`QUANTITY` IS NULL AND `order`.`cart_id` != `cart`.`id` ";
} else {
$sqlRemoveCarts =
"DELETE `cart` FROM `cart`
LEFT JOIN `cart_item` ON ( `cart`.`id` = `cart_item`.`cart_id` )
LEFT JOIN `order` ON ( `order`.`cart_id` = `cart`.`id` )
WHERE `cart`.`UPDATED_AT` <= :startDate AND `order`.`cart_id` != `cart`.`id` ";
}
La première a bien supprimer 89 panier, mais la seconde (qui doit supprimer les panier non vide) n'a aucun effet. Je dois faire une erreur quelques part certainement. Une idée ?