リレーションを更新する TYPO3 Flow に問題があります。フローは変更された関係を自動的に更新する必要があるので、関連するエンティティをそれぞれのリポジトリで更新する必要はありません。
例 1:
属性「jobs」に複数の「Job」子を持つモデル「Project」があります。私が行った場合:
$project->setJobs($collectionOfJobs);
$this->projectRepository->update($project);
その場合、ジョブは新しいプロジェクト ID で正しく更新されません。
例 2:
モデル "Project" と "Briefing" の間の双方向の 1 対 1 の関係を実現したかったのですが、TYPO3 に既知のバグがあることがわかりました:
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 (最新の安定版)
- Doctrine 2.3.6
- PHP 5.4.39-0+deb7u2