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"}) などのマッピングでこの関連付けを永続化します。
doctrine doc によると、このエラーは新しいオブジェクトを設定すると発生します。しかし、私は既存のオブジェクトをIDで取得しているだけです:
$product = $this->getProductRepository()->find($productId);
$item->setProduit($product); //this generates the error
$item->setUnitPrice(5); //this works fine
新しいオブジェクトとして保存される理由がわかりません。
merge
の代わりに使用するとpersist
、同じエラーが発生します。
関係を通じて新しいエンティティが見つかりました...