【问题标题】:Doctrine: Update whole Entity学说:更新整个实体
【发布时间】:2014-04-12 10:44:20
【问题描述】:

首先关闭一些代码:

class User {
     * @ORM\OneToMany(targetEntity="Profile", mappedBy="user")
     */
    protected $profiles;
}

(还有更多代码,但这是影响我的问题的部分)。

例如我有

已经在数据库中

User1: id = 1
Profile1: id = 1, parent = User1
Profile2: id = 2, parent = User2

尚未持久化

Profile3: 
Profile4: 

我想做的是能够打电话:

$user1->removeAllProfiles(); $user1->addAllNewProfiles(array($profile3, $profile4));

这应该会自动删除所有旧配置文件并添加所有新配置文件。

我希望很清楚我想要实现的目标。有人有想法吗?

【问题讨论】:

    标签: php symfony orm doctrine-orm cascade


    【解决方案1】:

    您可以更新您的属性注释以使用orphanRemoval...

    /** @OneToMany(targetEntity="Profile", mappedBy="user", orphanRemoval=true) */
    protected $profiles;
    

    这告诉 Doctrine 删除所有没有关联 User 对象的配置文件,因此当您调用 $user->removeAllProfiles(); 然后调用 $em->flush() 任何先前与用户关联的 Profile 对象将从数据库中删除.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多