繁体   English   中英

允许 Symfony 5 上的多对多重复(原则)

[英]Allow ManyToMany Duplications on Symfony 5 (Doctrine)

我有一个问题,这是一个学校项目,我需要使用 Symfony 5 & Doctrine & ZE4728F444B24839E3F80ADF3829BCBA 允许我的应用程序上的两个实体之间存在相同关系的重复

我在订单和产品之间基本上有一个多对多关系,我不想为数量添加字段,所以我希望在我的 order_product 表上计算相同关系 id_order 和 id_product 的出现次数,但我可以'在订单和产品之间保持不止一种相同的关系。

我搜索并主要看到人们试图避免相同关系的重复,我正在寻找完全相反的情况。

谢谢

当在关系的至少一侧使用与Many的关系时,您会在另一侧获得Collection 在集合上,您可以调用count()方法。

因此,如果您需要计算OrderProducts的数量,您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM