[英]Allow ManyToMany Duplications on Symfony 5 (Doctrine)
我有一个问题,这是一个学校项目,我需要使用 Symfony 5 & Doctrine & ZE4728F444B24839E3F80ADF3829BCBA 允许我的应用程序上的两个实体之间存在相同关系的重复
我在订单和产品之间基本上有一个多对多关系,我不想为数量添加字段,所以我希望在我的 order_product 表上计算相同关系 id_order 和 id_product 的出现次数,但我可以'在订单和产品之间保持不止一种相同的关系。
我搜索并主要看到人们试图避免相同关系的重复,我正在寻找完全相反的情况。
谢谢
当在关系的至少一侧使用与Many
的关系时,您会在另一侧获得Collection
。 在集合上,您可以调用count()
方法。
因此,如果您需要计算Order
中Products
的数量,您的Order
实体可以如下所示:
/** @Entity */
class Order
{
...
/**
* @ManyToMany(targetEntity="Product", inversedBy="orders")
* @JoinTable(name="order_product")
*/
private $products;
public function __construct()
{
$this->products = new ArrayCollection();
}
public function countProducts(): int
{
return $this->products->count();
}
public function countProductsById(int $productId): int
{
return $this->products->filter(static function(Product $product) use ($productId) {
return $product->getId() === $productId;
})->count();
}
...
}
PS:还要注意字Order
是 PostgreSQL 中的保留字。 您需要以不同的方式命名您的Order
实体或正确转义命名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.