首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >规则ManyToMany cleanup

规则ManyToMany cleanup
EN

Stack Overflow用户
提问于 2021-07-29 22:43:59
回答 1查看 12关注 0票数 0

我的项目实体与我的用户实体具有ManyToMany关系。这将创建一个预期的连接表。

如果我删除一个项目实体,我希望连接表中具有该项目实体id的所有行也被删除,但这不会发生。

我该如何实现这种行为呢?我已经试过orphanremoval=true

以下是我的项目实体的相关部分:

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * @ORM\Entity(repositoryClass=ProjectRepository::class)
 */
class Project
{
    ...
    
    /**
     * @ORM\ManyToMany(targetEntity=User::class)
     */
    private $userProjectManagers;

    ...
}

如果我删除了一个用户,也会发生同样的事情。我想我必须用mappedBy / inversedBy在我的用户实体中添加一个字段。

虽然我不确定这是否是一种坏的做法,因为我不需要该字段,除非删除连接表行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-29 16:04:09

让它像这样工作:

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * @ORM\Entity(repositoryClass=ProjectRepository::class)
 */
class Project
{
    ...
    
    /**
     * @ORM\ManyToMany(targetEntity=User::class, inversedBy="pmProjects")
     * @ORM\JoinTable(
     *     name="project_user",
     *     joinColumns={
     *          @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     *     },
     *     inverseJoinColumns={
     *          @ORM\JoinColumn(name="project_id", referencedColumnName="id")
     *     }
     * )
     */
    private $userProjectManagers;

    ...
}

/**
 * @ORM\Entity(repositoryClass=UserRepository::class)
 */
class User implements UserInterface
{
    ...

    /**
     * @ORM\ManyToMany(targetEntity=Project::class, mappedBy="userProjectManagers")
     */
    private $pmProjects;
    ...

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68578050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档