1

我一直试图从 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-joincolumnhttp://docs.doctrine-project.org/en/2.0.x/tutorials/composite-primary-keys.html

4

0 回答 0