Symfony - 持久化ManyToMany关系

时间:2017-01-19 17:25:49

标签: php symfony doctrine-orm

还有其他方法可以更好地编写这段代码吗?我在这里错过了什么吗?

$user->addEntity($entity);
$entity->addUser($user);


$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->persist($entity);

1 个答案:

答案 0 :(得分:0)

您只能从关系的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();

如果从db获取persist并且它不是新对象,则可以跳过$user