私はSymfony 3.2のキャッシュコンポーネントを使用しています。 I他との一対一の関係に多くを持っているエンティティの名前のMenuItemがあります。サービスでsymfonyキャッシュコンポーネントとレイジーロード
class MenuItem
{
//...
/**
* @ORM\ManyToOne(targetEntity="BaseBundle\Entity\ProductCategory")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
private $category;
//...
を、私はすべてのメニューアイテムを取得し、キャッシュに保存したい:
$menuItemsCached = $this->cache->getItem('app.menu_items');
if ($menuItemsCached->isHit()) {
$menuItems = $menuItemsCached->get();
} else {
$repository = $this->em->getRepository('WebBundle:MenuItem');
$menuItems = $repository->findBy([], ['weight' => 'ASC']);
$menuItemsCached->set($menuItems);
$this->cache->save($menuItemsCached);
}
return $menuItems;
問題は、私はキャッシュから配列を取得するとき、あなたが見ることができるように、私のMenuItemの内部実体ProductCategoryはプロキシされている、ということである:
5 => MenuItem {#3428 ▼
#id: 3
#name: "Vinils"
#weight: 60
#selector: "vinil"
-categoryCollection: ProductCategory {#3429 ▼
+__isInitialized__: false
#id: 23
#name: ""
そして、私はと呼ばれる場合製品カテゴリ名の代わりに ""が返されます(遅延読み込みは機能しません)。
遅延読み込みが機能しないため誰でも私のことを説明できればとてもうれしいです(この問題を避けるためにfetch="EAGER"
との関係を設定できると思います)。
ありがとうございました。