【发布时间】:2017-01-19 17:25:49
【问题描述】:
还有其他方法可以更好地编写这段代码吗?我在这里遗漏了什么吗?
$user->addEntity($entity);
$entity->addUser($user);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->persist($entity);
【问题讨论】:
标签: php symfony doctrine-orm
还有其他方法可以更好地编写这段代码吗?我在这里遗漏了什么吗?
$user->addEntity($entity);
$entity->addUser($user);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->persist($entity);
【问题讨论】:
标签: php symfony doctrine-orm
您只能从关系的owning side 添加;然后你可以persist 只使用那个对象并刷新它。
例如,如果你的注解是这样的
class User
{
/**
* @ORM\ManyToMany(targetEntity="Entity", inversedBy="users")
* @ORM\JoinTable(name="user_entity")
*/
protected $entities
}
class Entity
{
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="entities")
*/
protected $users;
}
你可以这样做
$user->add($entity);
$em = $this->getDoctrine()->getManager();
$em->flush();
如果 $user 是从 db 获取的并且不是新对象,则可以跳过 persist。
【讨论】: