我有两个地图一起映射。
Skin.php:
/**
* @var CmsElement
*
* @ORM\ManyToOne(targetEntity="CmsElement")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="homepage_id", referencedColumnName="id")
* })
*/
private $homepage;
CmsElement.php:
/**
* @var Skin
*
* @ORM\ManyToOne(targetEntity="Skin")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="skin_id", referencedColumnName="id")
* })
*/
private $skinId;
就是这样。 My Skin表格映射正确,我得到了CmsElement的id。但是在我的Cmselement中,我没有得到所需的skinId ......它总是保持为NULL。代码是相同的,为什么它不起作用?
更好理解的一个例子:
皮肤:
id: 1
homepage_id: 2
CmsElement:
id: 2
skin_id: NULL
答案 0 :(得分:0)
为了设置ManyToOne关系,你必须以这两种方式指定它:
// Skin.php
/**
* @var CmsElement
*
* @ORM\OneToMany(targetEntity="CmsElement", mappedBy="skinId")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="homepage_id", referencedColumnName="id")
* })
*/
private $homepage;
// CmsElement.php :
/**
* @var Skin
*
* @ORM\ManyToOne(targetEntity="Skin", inversedBy="homepage")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="skin_id", referencedColumnName="id")
* })
*/
private $skinId;
但是,请注意以下几点:
在这里,您可以找到信息,以便以正确的方式建立您的关系:Sf2 Doc