問題の概要
Doctrine2 を使用して Symfony2 で双方向の OneToOne 関係を作成する際に問題が発生しています。私のデータベースには、関連付けようとしている 2 つのテーブル、CrmCapacity と CrmPackages があります。CrmCapacity には、CrmPackages の Id フィールドに一致するフィールド PackageId があります。
パッケージから容量を取得できますが、容量からパッケージを取得できないようです。これは双方向ではなく一方向の関係です。
以下は私のコントローラーのコードです。これは、パッケージから容量にアクセスするのに問題なく機能します。
$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--
}
何か案は?私はこれに少し困惑しています。