Doctrine orm 类型3流持久更新关系
我在更新关系时遇到问题。 我错了吗,流应该自动更新更改的关系,这样我就不必用相应的存储库更新相关的实体了 示例1:Doctrine orm 类型3流持久更新关系,doctrine-orm,flow-framework,Doctrine Orm,Flow Framework,我在更新关系时遇到问题。 我错了吗,流应该自动更新更改的关系,这样我就不必用相应的存储库更新相关的实体了 示例1: 我有一个模型“Project”,属性“jobs”上有多个“Job”子项。 如果我这样做: $project->setJobs($collectionOfJobs); $this->projectRepository->update($project); 然后,作业未使用新的project-id正确更新 示例2: 我想实现模型“项目”和“简报”之间的双向一对一关系
我有一个模型“Project”,属性“jobs”上有多个“Job”子项。 如果我这样做:
$project->setJobs($collectionOfJobs);
$this->projectRepository->update($project);
然后,作业未使用新的project-id正确更新
示例2:我想实现模型“项目”和“简报”之间的双向一对一关系,并发现TYPO3中存在一个已知错误: 所以我想通过手动设置另一侧的关系来修复它:
class Briefing {
/**
* @param \Some\Package\Domain\Model\Project $project
* @return void
*/
public function setProject($project) {
$this->project = $project;
$this->project->setBriefing($this);
$this->projectRepository->update($this->project); // FIXME: Bug? Flow should do this
}
但我必须自己更新它与存储库的关系。流不应该自动执行此操作吗
所以,我真的需要自己更新每个孩子的存储库吗?或者Flow应该为我这样做吗
环境:-类型3流量2.3.3(最新稳定)
-原则2.3.6
-PHP 5.4.39-0+deb7u2来自: 将对象添加到存储库或从存储库中删除对象时,该对象将按照持久化时的预期添加到基础持久化或从基础持久化中删除。但是对已经持久化的对象的更改又如何呢?正如我们所看到的,只有当更改的对象在相应的存储库中更新时,这些更改才会持久化 现在,对于没有相应存储库的对象,如何持久化更改?以同样的方式,您可以通过遍历从其父对象获取这些对象。TYPO3流遵循存储库中管理的对象(聚合根)对所有持久性操作的引用,除非引用的对象本身是聚合根 因此,如果您的实体有一个存储库,则必须显式地调用update方法。这本来是不一样的,但是
也许您认为这应该是可行的,因为它在TYPO3 CMS Extbase<6.2中也可以使用。ok,那么这种行为只适用于没有自己存储库的模型?谢谢你的链接。所以我选择手动更新。