【发布时间】:2011-06-29 08:41:55
【问题描述】:
是否可以在 Doctrine 2 中创建两个多对多相关的对象,并仅在其中一个对象上调用 persist 来保存两者?
用户实体:
/**
* Owning Side
*
* @ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist"})
* @JoinTable(name="user_roles",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="role_id", referencedColumnName="id")}
* )
*/
public $roles;
角色实体:
/**
* Inverse Side
*
* @ManyToMany(targetEntity="User", mappedBy="roles")
*/
public $users;
保存:
$role = new Role();
$user = new User();
$user->roles->add($role);
$role->users->add($user);
$em->persist($user);
$em->flush();
它不起作用并引发错误“通过未配置为级联持久化操作的关系找到新实体:Entities\Role@0000000004a29c11000000005c48cb75。显式持久化新实体或在关系上配置级联持久化操作。 "
【问题讨论】: