我尝试使用继承创建OneToOne关系:
abstract class A { }
class A1 extends A { }
class A2 extends A { }
class F {
/**
* @ORM\OneToOne( ? )
*/
private $object; // Could be of type A1 or A2
}
我想这样做:
$f = $em->getRepository('MyBundle:F')->findExample();
$object = $f->getObject(); // Return instance of A1 or A2
应该使用哪些注释?
答案 0 :(得分:0)
如果您有单向关系,这意味着您只需要一个包含A实体的F实体,那么您可以使用单向关系:
class F {
/**
* @ORM\OneToOne(targetEntity="A")
* @ORM\JoinColumn(name="id_a", referencedColumnName="id")
*/
private $a_object;
}
请注意,该关系是与A建立的,这意味着该对象可以是A1或A2中的任何一个。如果您需要双向,那么您也应该在A中添加注释:
class A {
/**
* @OneToOne(targetEntity="F", mappedBy="a_object")
**/
private $f_object;
}
另请注意,您可以反转F和A之间的两个注释,具体取决于您认为哪个是主要方面。请查看此links和此links以获取更多信息。
希望这对你有所帮助。