Php Symfony2中的双向一元关系 问题提纲
我在使用Doctrine2在Symfony2中创建双向OneToOne关系时遇到一些问题。我的数据库有两个我试图关联的表,CrmCapacity和CrmPackages,CrmCapacity有一个字段PackageId,它与CrmPackages中的Id字段相匹配 我am能够从包中获得容量,但我似乎无法从容量中获得包,因为这种关系是单向的,而不是双向的 以下是我的控制器中的代码,它可以很好地从包中访问容量Php Symfony2中的双向一元关系 问题提纲,php,symfony,doctrine-orm,entity-relationship,Php,Symfony,Doctrine Orm,Entity Relationship,我在使用Doctrine2在Symfony2中创建双向OneToOne关系时遇到一些问题。我的数据库有两个我试图关联的表,CrmCapacity和CrmPackages,CrmCapacity有一个字段PackageId,它与CrmPackages中的Id字段相匹配 我am能够从包中获得容量,但我似乎无法从容量中获得包,因为这种关系是单向的,而不是双向的 以下是我的控制器中的代码,它可以很好地从包中访问容量 $package = $this->getDoctrine()
$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--
}
有什么想法吗?我对这个问题有点困惑。设法从Symfony IRC频道的memoryleak那里得到了答案。例如,在本例中使用的注释上设置fetch属性
class Capacity {
/**
* @OneToOne(targetEntity="Package", inversedBy="Capacity", fetch="EAGER")
* @JoinColumn(name="PackageId", referencedColumnName="Id")
*/
protected $Package;
--SNIP--
}
您的两个类都称为Package,这是打字错误吗?是的,谢谢您指出这一点。我已经更改了。你能发布创建实体元素的方法吗?我猜你不会做$package->addCapacity($elem);我没有添加任何元素,只是阅读。我正在通过PDO_DBLIB连接到一个只读MsSQL数据库。