流中的双向一对一关系
Bidirectional One-To-One Relationships in Flow
是否可以在 Flow 中拥有一对一关系而无需设置属性两次?
我有两个以一对一关系连接的表,但其中只有一个应该包含此关系的额外列。
Doctrine 明确支持这种行为:
http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-one-bidirectional
应该自带的class componenttape栏目:
/**
* @Flow\Entity
*/
class Component{
/**
* @var \Some\Package\Domain\Model\Component\Tape
* @ORM\OneToOne(cascade={"all"}, inversedBy="component")
*/
protected $componentTape;
…
}
class不加一列应该就可以找到连接了:
/**
* @Flow\Entity
*/
class Tape{
/**
* @var \ Some\Package\Domain\Model\Component
* @ORM\OneToOne(mappedBy="componentTape")
*/
protected $component;
}
条令更新将为两个模型创建额外的列。
这就是我目前的工作方式:
class Component{
..
/**
* @param \Some\Package\Domain\Model\Component\Tape $componentTape
* @return void
*/
public function setComponentTape($componentTape) {
$this->componentTape = $componentTape;
$this->componentTape->setComponent($this);
}
为了在请求期间始终保持关系正确,无论如何都需要解决方法。
但是第二个数据库列应该不是必需的。您是否检查过教义是否真正满足了它? Maybe/Probably只是创建的迁移错误,Tape
中的component
列可以省略
您的解决方法是否仍然适用于您?
就我而言,我必须自行更新存储库中的组件磁带模型:
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);
}
是否可以在 Flow 中拥有一对一关系而无需设置属性两次?
我有两个以一对一关系连接的表,但其中只有一个应该包含此关系的额外列。
Doctrine 明确支持这种行为: http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-one-bidirectional
应该自带的class componenttape栏目:
/**
* @Flow\Entity
*/
class Component{
/**
* @var \Some\Package\Domain\Model\Component\Tape
* @ORM\OneToOne(cascade={"all"}, inversedBy="component")
*/
protected $componentTape;
…
}
class不加一列应该就可以找到连接了:
/**
* @Flow\Entity
*/
class Tape{
/**
* @var \ Some\Package\Domain\Model\Component
* @ORM\OneToOne(mappedBy="componentTape")
*/
protected $component;
}
条令更新将为两个模型创建额外的列。
这就是我目前的工作方式:
class Component{
..
/**
* @param \Some\Package\Domain\Model\Component\Tape $componentTape
* @return void
*/
public function setComponentTape($componentTape) {
$this->componentTape = $componentTape;
$this->componentTape->setComponent($this);
}
为了在请求期间始终保持关系正确,无论如何都需要解决方法。
但是第二个数据库列应该不是必需的。您是否检查过教义是否真正满足了它? Maybe/Probably只是创建的迁移错误,Tape
中的component
列可以省略
您的解决方法是否仍然适用于您? 就我而言,我必须自行更新存储库中的组件磁带模型:
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);
}