Doctrine2是否会选择所有关联上的所有字段(来自查询的JOINS)以填充完整的聚合对象?

前锤

我正在研究是否尝试使用Doctrine2。令我恐惧的一件事是我不需要的列的过度选择(即,考虑不必要地选择了许多varchars)。

您可能会问:但是您不想要填充完整的实体对象吗?是的,除非我要寻找阵列补水。但是,很多时候我不需要完全聚合。采取以下所示的关联。如果我使用在地址上的JOIN查询用户表,那么地址表中的所有列也会被选择(并因此填充到用户对象内部的地址对象中)吗?现在想象我们有更多的联接。这可能真的很糟糕。如果我只希望仅在仅用户对象中填充“用户”中的字段,该怎么办?我想我对Doctrine在关联和查询JOIN背后的作用感到困惑。

/** @Entity **/
class User
{
    // ...

    /**
     * @ManyToOne(targetEntity="Address")
     * @JoinColumn(name="address_id", referencedColumnName="id")
     **/
    private $address;
}

/** @Entity **/
class Address
{
    // ...
}

那么,Doctrine2是否在查询后填充聚合中所有对象的所有字段(除非我指定了partial)?

保罗

它取决于您的查询,但通常不是隐式的。使用查询生成器,您可以像这样获取关联的记录:

<?php
$qb = $em->createQueryBuilder();
$query = $qb->select(array("u", "a"))
        ->from("User", "u")
        ->innerJoin("u.address", "a")
        ->getQuery();

在select()语句中,指定要获取的内容,在这种情况下,您会同时获取两者。

如果仅获取用户记录,则当您通过$ user-> getAddress()获得关联的记录时,Doctrine将即时进行查询并为您添加地址记录。

也就是说,从性能角度考虑,最好同时选择两个实体,以便Doctrine仅执行一个查询,而不执行1 + N个查询

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示来自查询的所有行

来自分类Dev

获取自连接对象及其子对象上的所有关联对象

来自分类Dev

是否可以找到与对象的所有关联记录以在Rails 4中合并记录

来自分类Dev

ZF2、Doctrine2、Gedmo - 具有关联的 SoftDelete JTI 实体

来自分类Dev

如何从ActiveRecord对象获取所有关联的模型?

来自分类Dev

从重复对象中删除所有关联

来自分类Dev

Mongodb聚合查询以基于数组中对象内部的字段求和所有值

来自分类Dev

为什么我的Rails查找查询会选择所有记录?

来自分类Dev

使用Postgres中的所有字段查询关联的MAX列

来自分类常见问题

JPQL返回所有关联的实体

来自分类Dev

放置所有关联代码的地方

来自分类Dev

确定所有表单字段是否完整

来自分类Dev

如何加载所有模型的所有关联

来自分类Dev

ActiveRecord查询以检索所有对象属性,包括关联

来自分类Dev

Python Selenium不会选择所有图像标签

来自分类Dev

KnownFolders.VideosLibrary会选择所有视频吗?

来自分类Dev

得到学说去选择没有所有关联的实体

来自分类Dev

如何使用Hibernate Query Language查询所有具有关联实体的实体?

来自分类Dev

如何在Ruby on Rails中汇总来自联接表的所有关联记录?

来自分类Dev

Symfony2 Doctrine2多对多将所有实体及其关系实体

来自分类Dev

Symfony2和Doctrine2:如何获取帖子的所有标签?

来自分类Dev

Symfony2 Doctrine2多对多将所有实体及其关系实体

来自分类Dev

Dapper嵌套对象查询-不填充所有属性

来自分类Dev

在现有数据库上添加学说 orm 而不定义所有关联

来自分类Dev

Doctrine2表达式eq特殊字符,用于匹配所有

来自分类Dev

与从大型数据库中选择所有行以填充ListView有关的性能问题

来自分类Dev

MongoDB在查询列表中选择所有where字段值

来自分类Dev

MongoDB在查询列表中选择所有where字段值

来自分类Dev

MySqli查询选择所有字段不为空

Related 相关文章

  1. 1

    显示来自查询的所有行

  2. 2

    获取自连接对象及其子对象上的所有关联对象

  3. 3

    是否可以找到与对象的所有关联记录以在Rails 4中合并记录

  4. 4

    ZF2、Doctrine2、Gedmo - 具有关联的 SoftDelete JTI 实体

  5. 5

    如何从ActiveRecord对象获取所有关联的模型?

  6. 6

    从重复对象中删除所有关联

  7. 7

    Mongodb聚合查询以基于数组中对象内部的字段求和所有值

  8. 8

    为什么我的Rails查找查询会选择所有记录?

  9. 9

    使用Postgres中的所有字段查询关联的MAX列

  10. 10

    JPQL返回所有关联的实体

  11. 11

    放置所有关联代码的地方

  12. 12

    确定所有表单字段是否完整

  13. 13

    如何加载所有模型的所有关联

  14. 14

    ActiveRecord查询以检索所有对象属性,包括关联

  15. 15

    Python Selenium不会选择所有图像标签

  16. 16

    KnownFolders.VideosLibrary会选择所有视频吗?

  17. 17

    得到学说去选择没有所有关联的实体

  18. 18

    如何使用Hibernate Query Language查询所有具有关联实体的实体?

  19. 19

    如何在Ruby on Rails中汇总来自联接表的所有关联记录?

  20. 20

    Symfony2 Doctrine2多对多将所有实体及其关系实体

  21. 21

    Symfony2和Doctrine2:如何获取帖子的所有标签?

  22. 22

    Symfony2 Doctrine2多对多将所有实体及其关系实体

  23. 23

    Dapper嵌套对象查询-不填充所有属性

  24. 24

    在现有数据库上添加学说 orm 而不定义所有关联

  25. 25

    Doctrine2表达式eq特殊字符,用于匹配所有

  26. 26

    与从大型数据库中选择所有行以填充ListView有关的性能问题

  27. 27

    MongoDB在查询列表中选择所有where字段值

  28. 28

    MongoDB在查询列表中选择所有where字段值

  29. 29

    MySqli查询选择所有字段不为空

热门标签

归档