有没有办法(使用 Doctrine 2)让实体相互嵌入(甚至不需要为某些实体提供表格)?有一个类的最简单的例子是:
class Point {
/** @Id @Column(type="integer") */
private $x;
/** @Id @Column(type="integer") */
private $y;
}
然后将其嵌入到另一个对象中,例如:
class Line {
/**
* @OneToOne(targetEntity="Point")
* @JoinColumn(name="start_x", referencedColumnName="x")
* @JoinColumn(name="start_y", referencedColumnName="y")
**/
private $start;
/**
* @Column(type="integer")
**/
private $length;
}
要点:所有字段都Point
包含在它的主键中,实际上它已嵌入Line
其中,因此没有必要使用它的表。
我知道一种可能性,可以array
用作类型并让 PHP 将点序列化为 varchar 字段,但这会消除我使用 ORM 而不是键值的这一点,一切都是序列化的存储方案。