Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony Doctrine2实体管理器刷新不更新关联实体_Symfony_Orm_Doctrine Orm - Fatal编程技术网

Symfony Doctrine2实体管理器刷新不更新关联实体

Symfony Doctrine2实体管理器刷新不更新关联实体,symfony,orm,doctrine-orm,Symfony,Orm,Doctrine Orm,说明: 我有一个用户实体,它有一个概要文件实体 问题: 我从数据库中加载用户,只更改其配置文件中的一些属性 我呼吁: $entityManager->flush($user) 但是用户没有更改任何属性,只是更改了其配置文件 我已经在用户对象内的profile属性上设置了cascade={“persist”} 如果我打电话给: $entityManager->flush() 注意:没有对象本身。我真的不想在没有对象作为参数的情况下这样做,因为我可能会刷新其他实体中的一些其他更改,而我在那个

说明: 我有一个用户实体,它有一个概要文件实体

问题:

  • 我从数据库中加载用户,只更改其配置文件中的一些属性
  • 我呼吁:

    $entityManager->flush($user)

  • 但是用户没有更改任何属性,只是更改了其配置文件

  • 我已经在用户对象内的profile属性上设置了cascade={“persist”}
如果我打电话给:

  • $entityManager->flush()

注意:没有对象本身。我真的不想在没有对象作为参数的情况下这样做,因为我可能会刷新其他实体中的一些其他更改,而我在那个特定时刻没有意识到这些更改。看起来,当有人以对象作为参数调用flush方法时,它没有意识到级联持久性。有什么办法解决这个问题吗?

因为您正在修改配置文件,而不是您应该使用的用户:


$entityManager->flush($profile)

为什么不
$entityManager->flush($profile)?是的,刷新配置文件也可以,可能是一个解决方案,但我认为刷新用户将是一个更好的解决方案。为什么?您正在修改配置文件,而不是用户。这是正确的行为。我认为由于cascade={“persist”},它还应该刷新配置文件的更改。很好,我会按照你的建议解决问题,不管怎样我都喜欢。:)条令在
$user
中没有看到任何更改,因此它不会对persist执行任何操作。