Sylius CartBundle:没有为实体指定标识符/主键

时间:2014-06-06 18:38:41

标签: symfony cart sylius

我正在按照此处描述的流程进行操作:

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中受到保护。
  • 如果我试图在YAML中指定一个id,我会收到错误,说它是重复的。另外,在doc中,它指定不再映射id

更新: 也许我走错了方向。

显示的第一个错误是:

  

通过“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);

这给了我错误。但也许我应该做一些不同的事情

1 个答案:

答案 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