我有一个 User 类,它与另一个实体结果具有一对一关联
一切工作正常,但每当我加载一组用户时,我都可以在分析器中看到 symfony 会为每个用户进行查询来加载他的结果。
我不需要到处都需要结果,我会在需要时手动检索它。 我开始相信 symfony 会自动加载与实体的一对一关系,但没有找到如何避免它。
我的类(class):
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;
}
-----编辑-----
我发现只有当用户实体加载到表单构建器中时才会发生:
$builder
->add('user', 'entity', array(
'class' => 'ThemBaseBundle:User',
'query_builder' => function($repository) {
return $repository->createQueryBuilder('a')
->orderBy('a.lastName', 'ASC');
},
'property' => 'fullName'
))
;
最佳答案
我不确定,但默认情况下可能会急切地获取一对一关系。尝试将获取策略切换为惰性。请参阅this section了解更多信息。
关于symfony - 如何避免symfony2自动加载一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8737528/