ここで説明されているプロセスに従っています:
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 の自動インクリメント、a、product_id
およびsylius_cart_item
しかし、アクセスしようとすると:
/cart/add?productId=3
私は得る
"Sylius\Bundle\CartBundle\Model\CartItem" のエンティティ "Pharmacie\FrontBundle\Entity\CartItem" サブクラスに識別子/主キーが指定されていません。すべてのエンティティには、識別子/主キーが必要です。
それでもデータベースには主キーが設定されています。
- 属性は Entity で保護されてい
$id
ます。$product
CartItem
- YAML で ID を指定しようとすると、重複しているというエラーが表示されます。さらに、ドキュメントでは、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);
そして、これは私にエラーを与えました。でも多分私は何か違うことをしたほうがいい