Doctrine2:如何使用两列(或复合键)链接实体?

时间:2013-04-07 12:12:35

标签: symfony join doctrine-orm multiple-columns composite-key

我一直在尝试从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

0 个答案:

没有答案