问题概要
我在使用 Doctrine2 在 Symfony2 中创建双向 OneToOne 关系时遇到了一些问题。我的数据库有两个我要关联的表,CrmCapacity 和 CrmPackages,CrmCapacity 有一个字段 PackageId,它与 CrmPackages 中的 Id 字段匹配。
我能够从包裹中获取容量,但我似乎无法从容量中获取包裹,因为关系表明它是单向的而不是双向的。
以下是我的控制器中的代码,这可以很好地访问包中的容量。
$package = $this->getDoctrine()
->getRepository('LargeAzureBundle:Package')
->find('ID-HERE');
var_dump($package->getName());
var_dump($package->getCapacity()->getIsIncompleteReason());
die();
效果很好,但是以下内容为容量而不是包获取数据
$capacity = $this->getDoctrine()
->getRepository('LargeAzureBundle:Capacity')
->find('3FF564FC-5EA0-E211-B8AC-005056B70002');
var_dump($capacity->getIsIncompleteReason());
var_dump($capacity->getPackage()->getName());
die();
实体
以下是我的实体的注释
包裹
class Package {
/**
* @OneToOne(targetEntity="Capacity", mappedBy="Package")
*/
protected $Capacity;
--SNIP--
}
容量
class Capacity {
/**
* @OneToOne(targetEntity="Package", inversedBy="Capacity")
* @JoinColumn(name="PackageId", referencedColumnName="Id")
*/
protected $Package;
--SNIP--
}
有任何想法吗?我对这个有点难过。