我的项目实体与我的用户实体具有ManyToMany关系。这将创建一个预期的连接表。
如果我删除一个项目实体,我希望连接表中具有该项目实体id的所有行也被删除,但这不会发生。
我该如何实现这种行为呢?我已经试过orphanremoval=true
了
以下是我的项目实体的相关部分:
/**
* @ORM\Entity(repositoryClass=ProjectRepository::class)
*/
class Project
{
...
/**
* @ORM\ManyToMany(targetEntity=User::class)
*/
private $userProjectManagers;
...
}
如果我删除了一个用户,也会发生同样的事情。我想我必须用mappedBy / inversedBy在我的用户实体中添加一个字段。
虽然我不确定这是否是一种坏的做法,因为我不需要该字段,除非删除连接表行。
发布于 2021-07-29 08:04:09
让它像这样工作:
/**
* @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;
...
}
https://stackoverflow.com/questions/68578050
复制