2015-05-20 47 views
1

我有一個問題TYPO3流程更新我的關係。 我錯了嗎,Flow應該自動更新更改的關係,所以我不必使用相應的存儲庫更新相關實體?typo3流程持續更新關係

例1:
我有一個模型「項目」與屬性「工作」多「作業」孩子的。 如果我做的:

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

然後作業不能正確地與新項目-ID更新。

例2:
我想實現模式 「項目」 和 「簡報」 之間的雙向one-to-一個關係,並發現,有在TYPO3一個已知的bug: Bidirectional One-To-One Relationships in Flow

所以我想用手動設置在另一側的關係,解決它:

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爲我做這個?

環境:
- TYPO3 FLOW 2.3.3(最新的穩定)
- 學說2.3.6
- PHP 5.4.39-0 + deb7u2

回答

1

Flow manual

當您向存儲庫添加或從存儲庫中刪除對象時,將按persistAll的預期方式將對象添加到基礎持久性或從基礎持久性中移除。但是,對已經存在的對象所做的更改呢?正如我們所看到的那樣,如果更改的對象在相應的存儲庫上進行更新,那麼這些更改只會持續存在。

現在,對於沒有相應存儲庫的對象,更改如何持久?以同樣的方式,你可以通過遍歷從父對象中獲取這些對象。除非引用的對象本身是一個聚合根,否則TYPO3流遵循所有持久性操作中來自存儲庫中管理的對象(聚合根)的引用。

因此,如果存在實體的存儲庫,則必須明確地調用更新方法。這本來是不同的,但是changed for Flow 1.0

也許你認爲這應該工作,因爲它在TYPO3 CMS Extbase < 6.2中工作,直到它也是changed there

+0

好的,所以這種行爲只適用於沒有自己的存儲庫的模型?感謝您的鏈接。所以我去手動更新。 –