Doctrine orm 非拯救关系主义

Doctrine orm 非拯救关系主义,doctrine-orm,doctrine,Doctrine Orm,Doctrine,我有这种关系: 在用户角色中 /** * @ORM\ManyToOne(targetEntity="Brand", inversedBy="managers") * @ORM\JoinColumn(referencedColumnName="id") */ private $brandManage; 品牌 /** * @ORM\OneToMany(targetEntity

我有这种关系:

用户角色中

    /**
     * @ORM\ManyToOne(targetEntity="Brand", inversedBy="managers")
     * @ORM\JoinColumn(referencedColumnName="id")
     */
    private $brandManage;
品牌

    /**
     * @ORM\OneToMany(targetEntity="UserRole", mappedBy="brandManage")
     */
    private $managers;
使用中

    /**
     * @ORM\OneToOne(targetEntity="UserRole", mappedBy="user", cascade={"persist"})
     */
    private $role;
现在我正试图在
UserRole
中为
brandManage
分配一个品牌,但数据库没有更新;即使实体在保存前已正确更新(使用dump检查),关系也始终为空

为了回答这个问题,我使用了三种方法来保存,如下所示;他们都不工作!我还插入了一个
模具之后,结果相同

$userRole->setBrandManage($brand);
$userRoleRepository->save($userRole);

$user->setRole($userRole);
$userRepository->save($user);

$this->em->persist($userRole);
$this->em->persist($user);
$this->em->flush();
现在我注意到,如果我创建了一个新的
UserRole
,则关系会正确保存,但如果我正在更新一个现有的
UserRole
,则关系不会正确保存

所以我尝试总是创建一个新的,但出于某种原因,doctrine没有保存新的
UserRole
,因为它说数据库中已经存在一个具有相同用户Id的
UserRole
,但它不是。我必须保存第二次,以便创建新的
UserRole

编辑: 如果我按照下面的顺序做,它会工作,但让它如此复杂是没有意义的。。。。为什么我不能保存这个角色? 此解决方法通过在再次保存之前删除用户角色,有效地创建了一个新的
UserRole
。。。回到原来的问题上来

$userRole->setBrandManage($brand);
$userRoleRepository->save($userRole);
                    
$user->setRole($userRole);
$userRepository->save($user);

$this->em->remove($user->getRole());
$this->em->flush();

$this->em->persist($userRole);
$this->em->persist($user);
$this->em->flush();

“保存”功能已保留在数据库中。您将选择Between sava或persist函数

$userRole->setBrandManage($brand);
$user->setRole($userRole);
// Note if you set cascade persist from user to role, you can omit that line
$this->em->persist($userRole); 
$this->em->persist($user);
$this->em->flush();