首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Symfony原则ManyToMany添加自定义连接字段

Symfony原则ManyToMany添加自定义连接字段
EN

Stack Overflow用户
提问于 2016-01-07 15:08:43
回答 1查看 2K关注 0票数 3

我有两个实体:CartItem,这个关系是用ManyToMany配置的,因为一个购物车可以有多个条目,一个项目可以在多个手推车中。

因此,我有一个带有item_idcart_id的链接表cart_id

我怎么能用这个来处理数量呢?例如,如果我需要用id = 2将800个项目添加到id = 5购物车中?

这可以在链接表中添加字段数量吗?

谢谢你帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-07 15:30:08

您可以通过建立与实体的关系本身来做到这一点。这个实体将被称为CartItemCartItemLink

ManyToManyCartItem之间的关联转变为ManyToOneOneToMany的两种关联。

Cart - ManyToOne - CartItem - OneToMany - Item

现在,您可以向CartItem中添加其他字段,就像问题中提到的$quantity字段一样。

所以这个看起来是这样的:

The CartItem

代码语言:javascript
运行
复制
class CartItem {

    /** MANY-TO-ONE BIDIRECTIONAL, OWNING SIDE
     * @var Cart
     * @ORM\ManyToOne(targetEntity="Application\Entity\Cart", inversedBy="cartItems")
     * @ORM\JoinColumn(name="cart_id", referencedColumnName="id")
     */
    private $cart;

    /** MANY-TO-ONE BIDIRECTIONAL, OWNING SIDE
     * @var Item
     * @ORM\ManyToOne(targetEntity="Application\Entity\Item", inversedBy="cartItems")
     * @ORM\JoinColumn(name="item_id", referencedColumnName="id")
     */
    private $item;

    /**
     * @var int
     * @ORM\Column(type="integer", nullable=false)
     */
    private $quantity;

    //.. setters + getters
}

The Cart

代码语言:javascript
运行
复制
class Cart {

    /**
     * @var integer
     * @ORM\Id
     * @ORM\Column(type="integer", nullable=false)
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** ONE-TO-MANY BIDIRECTIONAL, INVERSE SIDE
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="Application\Entity\CartItem", mappedBy="cart")
     */
    private $cartItems;

    //.. setters + getters
}

The Item

代码语言:javascript
运行
复制
class Item {

    /**
     * @var integer
     * @ORM\Id
     * @ORM\Column(type="integer", nullable=false)
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** ONE-TO-MANY BIDIRECTIONAL, INVERSE SIDE
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="Application\Entity\CartItem", mappedBy="item")
     */
    private $cartItems;

    //.. setters + getters
}

我没有向CartItem添加一个id,因为它可以是一个复合键($item_id + $cart_id),也可以是一个自然密钥,由您决定。

inside the constructor of ItemCart.

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34658557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档