Php Symfony2中的双向一元关系 问题提纲

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()

我在使用Doctrine2在Symfony2中创建双向OneToOne关系时遇到一些问题。我的数据库有两个我试图关联的表,CrmCapacity和CrmPackages,CrmCapacity有一个字段PackageId,它与CrmPackages中的Id字段相匹配

am能够从包中获得容量,但我似乎无法从容量中获得包,因为这种关系是单向的,而不是双向的

以下是我的控制器中的代码,它可以很好地从包中访问容量

$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数据库。