gpt4 book ai didi

Symfony Doctrine ManyToMany 添加自定义连接字段

转载 作者:行者123 更新时间:2023-12-01 23:22:28 24 4
gpt4 key购买 nike

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

所以我有一个链接表 item_cart,其中包含 item_idcart_id

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

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

感谢您的帮助。

最佳答案

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

关联从 CartItem 之间的 ManyToMany 更改为两个关联 ManyToOneOneToMany:

购物车 - ManyToOne - CartItem - OneToMany - 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
}

购物车:

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
}

项目:

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) 或自然键,我留给你。

Don't forget to initialize your $cartItems ArrayCollection inside the constructor ItemCart

关于Symfony Doctrine ManyToMany 添加自定义连接字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com