我一直在尝试从Doctrine2文档和互联网上找到与此复合相关的问题的答案,但到目前为止还没有确定的线索。
为了保持简洁,基本上我需要链接3个实体:Object,Grid和GriddingSquare。在Grid中找到一个对象,更具体地说,在一个GriddingSquare中找到一个对象。网格由1个或多个GriddingSquare组成。
在源数据库(无法轻易修改)中,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