我正在按照此处描述的流程进行操作:
http://docs.sylius.org/en/latest/bundles/SyliusCartBundle/installation.html#creating-your-entities
我一直在努力实施CartBundle
几天没有成功,任何帮助都是值得欣赏的!
我正在尝试实施我自己的产品实体,如文档中所述。
这是我的YAML:
Pharmacie\FrontBundle\Entity\CartItem:
type: entity
table: cart_item
manyToOne:
product:
targetEntity: Product
joinColumn:
name: product_id
referencedColumnName: id
自动创建的数据库看起来不错,ID自动增加,product_id
以及sylius_cart_item
但是当我尝试访问时:
/cart/add?productId=3
我得到了
没有为“Sylius \ Bundle \ CartBundle \ Model \ CartItem”的实体“Pharmacie \ FrontBundle \ Entity \ CartItem”子类指定标识符/主键。每个实体都必须有一个标识符/主键。
即使在数据库中已经设置了主键。
$id
和$product
在实体CartItem
中受到保护。更新: 也许我走错了方向。
显示的第一个错误是:
通过“Pharmacie \ FrontBundle \ Entity \ CartItem #produit”关系找到了一个新实体,该关系未配置为对实体进行级联持久操作:Pharmacie \ FrontBundle \ Entity \ Product @ 000000007ba4ab6a0000000010e955d1。要解决此问题:在此未知实体上显式调用EntityManager#persist()或在映射中配置级联持久保存此关联,例如@ManyToOne(..,cascade = {“persist”})。如果您无法找出导致问题的实体,请执行'Pharmacie \ FrontBundle \ Entity \ Product #__ toString()'以获取线索。 500内部服务器错误 - ORMInvalidArgumentException
所以我添加了
$this->entityManager->persist($item);
这给了我错误。但也许我应该做一些不同的事情
答案 0 :(得分:0)
您的实体文件应如下所示:
Pharmacie\FrontBundle\Entity\CartItem:
type: entity
table: cart_item
id:
id:
type: integer
generator:
strategy: AUTO
manyToOne:
product:
targetEntity: Product
joinColumn:
name: product_id
referencedColumnName: id