Доктрина 2 ManyToMany каскад

Возможно ли в Doctrine 2 создать два объекта, многие из которых связаны друг с другом, и вызов сохраняется только на одном из них, чтобы сохранить оба?

Пользовательский объект:

/** * 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(); 

Он не работает и бросает сообщение об ошибке «Новый объект был найден через отношения, которые не были сконфигурированы для каскадных операций persist: Entities \ Role @ 0000000004a29c11000000005c48cb75. Явно сохраняйте новый объект или настраивайте операции каскадирования с сохранением отношения».

Вы должны применить cascade={"persist"} к объекту Role.

Не эксперт по Doctrine, но я думаю, что Doctrine проверяет связанный объект для каскадных параметров.

Поскольку вы каскадируете сохранение от пользователей до ролей , он проверяет объект Role, если он должен сохраняться с помощью каскада.