У меня есть объект Cart
, который содержит ArrayCollection
из CartItems
.Отношение в коде -
Cart.php:
class Cart
{
/**
* @ORM\OneToMany(targetEntity="CartItem", mappedBy="cart")
*/
private $cartItems;
public function __construct(User $user)
{
$this->cartItems = new ArrayCollection();
}
}
CartItems
по сути является указателем БД (из-за отсутствия лучшего термина) на сущность Product
с дополнительнымquantity
field.
CartItem.php:
class CartItem
{
/**
* @ORM\ManyToOne(targetEntity="Cart", inversedBy="cartItems")
*/
private $cart;
/**
* @ORM\OneToOne(targetEntity="Product")
*/
private $product;
/**
* @ORM\Column(type="float")
*
* @Assert\NotBlank(message="You must specify how much of the item you wish to buy")
* @Assert\Regex(pattern="/^\d+(\.\d{1,2})?$/", message="The quantity must be a number")
*/
private $quantity;
}
В моем приложении, когда пользователь хочет добавить Product
к своему Cart
, я хочу проверить, чтобы увидетьесли этот конкретный Product
уже является одним из CartItems
.Если это так, я хочу увеличить quantity
, в противном случае добавить его в коллекцию.Я не совсем уверен, как это сделать.
ArrayCollection
методы exists
и contains
просто возвращают true / false.Учитывая мои настройки, я не уверен, что бы использовать в качестве ключа для коллекции.
Есть предложения?