原则形式- typo3流持久化更新关系



我有一个问题TYPO3流更新我的关系。Flow应该自动更新已更改的关系,这样我就不必使用各自的存储库更新相关实体,我说错了吗?

示例1:
我有一个模型"项目"与属性"工作"的多个"工作"的孩子。如果我这样做:

$project->setJobs($collectionOfJobs);
$this->projectRepository->update($project);

则作业没有使用新的project-id正确更新。

示例2:
我想实现"Project"one_answers"Briefing"模型之间的双向一对一关系,发现TYPO3中有一个已知的bug:流动中的双向一对一关系

所以我想通过手动设置另一边的关系来修复它:

class Briefing {    
 /**
  * @param SomePackageDomainModelProject $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不应该自动完成这个吗?

所以我真的需要自己更新每个子节点的存储库还是Flow应该为我做这件事?

环境:
- TYPO3 FLOW 2.3.3(最新稳定版)
-原则2.3.6
- PHP 5.4.39-0+deb7u2

来自Flow手册:

当您向存储库添加或从存储库中删除一个对象时,该对象将按照预期在persistAll上从底层持久性中添加或删除。但是,如果对已经持久化的对象进行更改呢?正如我们所看到的,只有当更改的对象在相应的存储库上更新时,这些更改才会被持久化。

现在,对于没有相应存储库的对象,如何持久化更改?以同样的方式从它们的父对象中获取这些对象——通过遍历。对于所有持久性操作,TYPO3 Flow遵循来自存储库中管理的对象(聚合根)的引用,除非引用的对象本身是聚合根。

因此,如果您的实体有存储库,则必须显式调用update方法。这在最初是不同的,但是在Flow 1.0中改变了。

也许你认为这应该工作,因为它在TYPO3 CMS Extbase <</p>

最新更新