当前位置:  开发笔记 > 编程语言 > 正文

Symfony主义ManyToMany添加自定义联接字段

如何解决《Symfony主义ManyToMany添加自定义联接字段》经验,为你挑选了1个好方法。

我有两个实体:CartItemManyToMany因为一个购物车可以有多个项目,并且一个项目可以在多个购物车中,所以配置了该关系。

所以我有一个链接表item_cartitem_idcart_id

我该如何处理数量?例如,如果我需要将800项商品添加id = 2到购物车中id = 5

是否可以在链接表中添加字段数量?

感谢帮助。



1> Wilt..:

您可以通过将关系本身与实体建立关系来实现。该实体称为CartItemCartItemLink

关联从和ManyToMany之间变为两个关联,并且:CartItemManyToOneOneToMany

Cart- 多对一 - CartItem- 一对多 -Item

现在,您可以向中添加其他字段CartItem,例如$quantity问题中提到的字段。

所以这看起来像这样:

CartItem

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
}

Cart

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
}

Item

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
}

我没有添加ID,CartItem因为它可以具有复合键($item_id+ $cart_id)或自然键,并且我可以自己决定。

别忘$cartItems ArrayCollection了在Item和的内部构造函数中进行初始化Cart

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有