如何从symfony中删除多对多关系中的所有条目

时间:2016-01-07 21:31:09

标签: php symfony doctrine

我正在开展一个项目,我需要有一个团队和锦标赛的注册表。一个团队可以参与许多比赛,因此是一个多对多的关系。

所以在symfony中,我只为这种多对多关系创建了两个实体:团队和RgTournaments。

ERD

我的问题是如何使用doctrine从单个查询中删除所有当前关系(截断表rg_teams_to_tournaments)?

我找到的唯一方法是here,但我想避免加载所有条目,以便逐个删除它们。

2 个答案:

答案 0 :(得分:1)

使用DQL。

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#delete-queries

DELETE FROM RelatedEntity WHERE fk = :id

或者您可以使用QueryBuilder构建相同的基本想法

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html

如果您没有实际实体,请对集合使用 - > clear()方法。你找到主要实体(例如团队),然后像$ myTeam-> tournaments-> clear();然后冲洗。

答案 1 :(得分:0)

如果您想要做的只是闪现整个表格,您可以使用原始SQL。

快/脏但有效。

$entityManager->getConnection()->executeQuery('delete from your_many_to_many_join_table');