Symfony 2.8を使用しています。SymfonyとDoctrine:遅延ロードが機能していません
私はコミュニティがのMenuItemのセットを持ってエンティティ、MenuItemのコミュニティとを持っています。 Iを使用する場合、
...
/**
* @var Community
*
* @ORM\ManyToOne(targetEntity="Community", inversedBy="menuItems")
*/
private $community;
...
点がある:
...
/**
* @ORM\OneToMany(targetEntity="MenuItem", mappedBy="community", fetch="LAZY")
* @ORM\OrderBy({"sequence" = "ASC"})
*/
private $menuItems;
...
MenuItem.php次のコードを持っている:
Community.phpは、以下のコードを有する
$menuItems = $community->getMenuItems();
$menuItems
変数は空のコレクションになります。そのようにカテゴリーエンティティの$menuItems
属性はすぐにロードされているので、
問題は、fetch="EAGER"
代わりのfetch="LAZY"
を設定することによって解決することができます。 EAGER(source)対LAZY
:
お手元に管理エンティティインスタンスを持っているときはいつでも、あなたが通過すると、彼らはすでにメモリ内であるかのようにLAZYに設定されているエンティティの任意の関連付けを使用することができます。 Doctrineは、レイジーローディングのコンセプトにより、必要に応じて関連オブジェクトを自動的にロードします。
永続的な関連付けを持つエンティティを照会し、これらの関連付けがEAGERとしてマップされると、それらは照会されるエンティティと一緒に自動的にロードされ、アプリケーションですぐに使用できます。
EAGERの読み込みは期待どおりに動作していますが、LAZYの読み込みはまったく動作していないようです。理由は何ですか?