多对多的 Symfony2 DQL 更新查询

Posted

技术标签:

【中文标题】多对多的 Symfony2 DQL 更新查询【英文标题】:Symfony2 DQL Update query with Many to Many 【发布时间】:2017-10-22 05:41:05 【问题描述】:

我有三个表“category”、“product”和“product_category”。 前两个表是从两个实体类别和产品创建的。 第三个表“product_category”由框架教义控制台命令自动生成。

现在我可以从下面的查询中获取(获取)产品关系数据(基于类别 ID),这很好。

$this->createQueryBuilder('p')
                ->leftJoin('p.category', 'c')
                ->select('p')
                ->where('c.id = :category_id')
                ->setParameter('category_id', 2)
                ->getQuery()->getSQL();

但是如何使用多对多关系来更新数据? 我尝试了几个查询,但它不起作用!!! ( 我想将所有产品状态更新为非活动 (2),其类别状态为 (2 = 非活动)。

【问题讨论】:

【参考方案1】:

在对有子表的表进行查询时。您也可以只获取父项,然后教义会自动处理子对象。如果Product 实体中有getCategory,它将自动解析类别。

您正在寻找的可能是级联事件。其中Doctrine 2 ManyToMany cascade中解释了

【讨论】:

以上是关于多对多的 Symfony2 DQL 更新查询的主要内容,如果未能解决你的问题,请参考以下文章

多对多和形式 Symfony2

多对多关系的 DQL 语句

hibernate多对多查询

Symfony2 删除并保存多对多关系

多对多的 Django Inline 生成重复查询

CoreData:查询一对多对多的关系