2015-03-25 61 views
0

是否有可能具有一對一關係在流程中無需設置屬性兩次流程中的雙向一對一關係

我有兩個表以一對一的關係連接,但只有其中一個應包含此關係的額外列。

學說明確支持這一行爲: http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-one-bidirectional

應該拿出一個componenttape柱類:

/** 
* @Flow\Entity 
*/ 
class Component{ 
    /** 
    * @var \Some\Package\Domain\Model\Component\Tape 
    * @ORM\OneToOne(cascade={"all"}, inversedBy="component") 
    */ 
    protected $componentTape; 
    … 
} 

應該只是能夠找到不需要額外的柱連接的類:

/** 
* @Flow\Entity 
*/ 
class Tape{ 
    /** 
    * @var \ Some\Package\Domain\Model\Component 
    * @ORM\OneToOne(mappedBy="componentTape") 
    */ 
    protected $component; 
} 

學說更新將爲這兩個模型創建額外的列。

這是我此刻workarround樣子:

class Component{  
    ..  
    /** 
    * @param \Some\Package\Domain\Model\Component\Tape $componentTape 
    * @return void 
    */ 
    public function setComponentTape($componentTape) { 
     $this->componentTape = $componentTape; 
     $this->componentTape->setComponent($this); 
    } 

回答

1

的解決方法將是必要的反正請求過程中保持正確的關係,在任何時候都。 但是第二個DB列不應該是必需的。你有沒有檢查教義是否真正填補了它?也許/可能只是創建的遷移是錯誤的,並且Tape中的component列可以省略。

+0

僅供參考,目前有OneToOne關係的錯誤。請參閱https://review.typo3.org/#/c/35071/ – ChristianM 2015-04-07 21:50:35

0

您的解決方法是否適用於您? 在我的情況,我有自我更新資源庫中的ComponentTape型號:

class Component {  

    /** 
    * @param \Some\Package\Domain\Model\Component\Tape $componentTape 
    * @return void 
    */ 
    public function setComponentTape($componentTape) { 
    $this->componentTape = $componentTape; 
    $this->componentTape->setComponent($this); 
    $this->componentTapeRepository->update($this->componentTape); 
    }