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

标签 symfony doctrine-orm

我有一个 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/

相关文章:

PHPUnit 测试写入文件的函数并将内容检查到创建的文件中

symfony - mopabootstrap bundle 和 symfony2 问题

php - 完整的 Symfony2 教程

symfony - Doctrine2 实体更新后仍然生成旧数据库表

php - INET_ATON 在 where 语句 doctrine2 querybuilder zend2

php - 使用 Composer 和 Assets 将 jQuery 包含在 symfony 项目中的最佳方法是什么

symfony - 从 Dotrine 2.5 中的抽象类获取目标实体的存储库

namespaces - Doctrine 2 命名空间问题

database - 使用 doctrine2 测试 symfony2 的数据生成器

symfony - 允许在选择字段类型中添加新值