教义多对多关联未得到解决

时间:2013-06-15 13:40:59

标签: symfony doctrine-orm

当我在使用Doctrine ORM的Symfony2中使用多对多关系时,我遇到的问题是我的多对多关系未得到解决。

示例:

    Class A:

    /**
     * @ORM\ManyToMany(targetEntity="StoreItem", mappedBy="itemOptions")
     */
    protected $storeItems;

    Class B:
    /**
     * @ORM\ManyToMany(targetEntity="StoreItemOption", inversedBy="storeItems")
     * @ORM\JoinTable(name="store_item_itemoptions")
     */
    protected $itemOptions;

现在我将对象存储在一个会话中,注意我还没有使用

来调用多对多的关系
    ->getItemOptions()

当我现在获得会话对象并执行 - > getItemOptions()时,它就是空的。

任何人都知道造成这种情况的原因是什么?

(PS:我发现一个hacky解决方案,当我向我的购物车添加一个项目时,我做了一个空的foreach调用方法 - > getItemOptions())

1 个答案:

答案 0 :(得分:1)

这称为“延迟加载”,是一种旨在减少内存开销的学说功能。

您可以将加载设置为'eager'或为DQL中的其他字段显式添加select以避免延迟加载:例如:

$objectsA=$em->createQueryBuilder('\Class\A', 'a')
             ->join('a.b', 'b')
             ->addSelect('b')
             ->getQuery()
             ->getResult();