我一直试图从 Doctrine2 文档和互联网上找到与复合材料相关的问题的答案,但到目前为止还没有确定的线索。
为了简单起见,基本上我需要链接 3 个实体:Object、Grid 和 GriddingSquare。一个对象可以在 Grid 中找到,更具体地说,在一个 GriddingSquare 中。Grid 由 1 个或多个 GriddingSquares 组成。
在源数据库(不能轻易修改)中,GriddingSquare 由“GridID”(整数)和“GridSquareLabel”(字符串)唯一标识。因此,这两列都在 Object 表(& entity)和 GriddingSquare 表(& entity)中。
我尝试了以下方法,但似乎无法正常工作:
对象实体:
/**
* @var \Grid
*
* @ORM\ManyToOne(targetEntity="Grid")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="GridID", referencedColumnName="GridID")
* })
*/
private $gridid;
/**
* @var string
*
* @ORM\Column(name="GridSquareLabel", type="string", length=20, nullable=true)
*/
private $gridsquarelabel;
/**
* @var \CdbGriddingsquares
*
* @ORM\ManyToOne(targetEntity="CdbGriddingsquares")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="GridID", referencedColumnName="GridID"),
* @ORM\JoinColumn(name="GridSquareLabel", referencedColumnName="GridSquareLabel")
* })
*/
private $griddingsquare;
GriddingSquare 实体:
/**
* @var \Grid
*
* @ORM\ManyToOne(targetEntity="Grid")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="GridID", referencedColumnName="GridID")
* })
*/
private $gridid;
/**
* @var string
* @ORM\Column(name="GridSquareLabel", type="string", nullable=false)
*/
private $gridsquarelabel;
尝试使用 Doctrine2 文档中的以下建议,但尽管它在技术上是一个“复合密钥”问题,但我似乎无法找到一个示例来帮助我理解我需要做什么http://docs.doctrine-project。 org/en/latest/reference/annotations-reference.html#annref-joincolumn和http://docs.doctrine-project.org/en/2.0.x/tutorials/composite-primary-keys.html