如何避免symfony2自动加载一对一的关系

时间:2012-01-05 04:08:52

标签: symfony doctrine-orm

我有一个User类,它与另一个实体Result

具有一对一的关联

一切都运行正常,但无论何时加载一组用户,我都可以在分析器中看到每个用户symfony都会进行查询以加载他的结果。

我不需要到处都是结果,我需要时手动检索它。 我开始相信symfony会自动加载与实体的一对一关系,但却没有找到如何避免它。

我的课程:

class User extends BaseUser {
    /**
     * @ORM\OneToOne(targetEntity="Result", mappedBy="user", cascade={"all"}, orphanRemoval=TRUE)
     */
     protected $result;
}

class Result {
    /**
     * @ORM\OneToOne(targetEntity="User", inversedBy="result")
     * @ORM\JoinColumn(name="id_user", referencedColumnName="id")
     */
    protected $user;
 }

-----编辑-----

我发现只有当用户实体加载到formbuilder时才会发生:

$builder
    ->add('user', 'entity', array(
        'class' => 'ThemBaseBundle:User',
        'query_builder' => function($repository) {
            return $repository->createQueryBuilder('a')
            ->orderBy('a.lastName', 'ASC');
        },
        'property' => 'fullName'
    ))
;

1 个答案:

答案 0 :(得分:2)

我不确定,但默认情况下,可能会急切地提出一对一的关系。尝试将获取策略切换为懒惰。有关详细信息,请参阅this section