Я пытаюсь реализовать Sylius Cart Bundle, но каждый раз, когда я добавляю товар в корзину, создается новый товар.
Вероятно, это ссылка на мою строчку:
cascade: ["persist", "remove"]
В моем файле YAML:
Pharmacie\FrontBundle\Entity\CartItem:
type: entity
table: app_cart_item
manyToOne:
produit:
targetEntity: Pharmacie\FrontBundle\Entity\Product
cascade: ["persist", "remove"]
joinColumn:
name: product_id
referencedColumnName: id
Но если снять, то выдает ошибку:
Была обнаружена новая сущность через связь «Pharmacie \ FrontBundle \ Entity \ CartItem # produit», которая не была настроена для каскадного выполнения операций сохранения для объекта: 3test2. Чтобы решить эту проблему: либо явно вызовите EntityManager # persist () для этого неизвестного объекта, либо настройте каскад, чтобы сохранить эту связь в сопоставлении, например @ManyToOne (.., cascade = {"persist"})
Согласно доктрине, эта ошибка возникает при установке нового объекта. Но я получаю только существующий объект по идентификатору:
$product = $this->getProductRepository()->find($productId);
$item->setProduit($product); //this generates the error
$item->setUnitPrice(5); //this works fine
Я не понимаю, почему он сохраняется как новый объект.
Если я использую merge
вместо persist
, я получаю ту же ошибку:
Новый объект был найден через отношения ...