避免返回所有实体的学说

2023-12-12

使用Symfony2/doctrine2,当我们使用find()函数根据选择的实体获取特定对象(如果存在关系)时(如OneToMany),Doctrine返回所有其他对象。

例如 :

$em = $this->get(
         'doctrine.orm.entity_manager', 
          $request->getSession()->get('entity_manager')
);
$product = $em->getRepository('MyBundle:Product')->find($id);

$product 上的结果将是 Product 对象 + 其他链接对象,例如(商店、类别等)

我们如何控制原则来确定我们需要归还哪个对象。

我可以使用 Querybuilder,但我正在寻找是否有任何函数都是确定的。


教义返回所有其他对象

这不是它的工作原理,至少在默认情况下是这样。

教义使用所谓的延迟加载.
从官方文档中可以看到以下示例:

<?php
/** @Entity */
class Article
{
    /** @Id @Column(type="integer") @GeneratedValue */
    private $id;

    /** @Column(type="string") */
    private $headline;

    /** @ManyToOne(targetEntity="User") */
    private $author;

    /** @OneToMany(targetEntity="Comment", mappedBy="article") */
    private $comments;

    public function __construct {
        $this->comments = new ArrayCollection();
    }

    public function getAuthor() { return $this->author; }
    public function getComments() { return $this->comments; }
}

$article = $em->find('Article', 1);

以及以下解释:

而不是向您传回一个真实的 Author 实例和集合 comments Doctrine 将为您创建代理实例。仅当你 第一次访问这些代理时,他们将通过 EntityManager 并从数据库加载它们的状态。

参考:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#entity-object-graph-traversal

有关该主题的更多信息:http://www.doctrine-project.org/blog/doctrine-lazy-loading.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免返回所有实体的学说 的相关文章

  • 如何按关系的数量或成员对 Doctrine DQL 查询进行排序?

    我正在尝试创建一个查询 用于从 Doctrine 数据库中检索对象 并按特定一对多关系的成员数量排序 更具体地说 我有两个实体 Person 和 Federation 一个人可以是一个联盟的成员 人具有 联盟 关系 并且一个联盟可以有n人
  • Twig dump 不打印任何内容

    我现在有点困惑 我总是像其他树枝函数一样使用树枝转储函数 但现在它完全没有输出 没有错误 异常 什么都没有 其他一切都工作正常 例如反式过滤器 dump test prints nothing layout booking chooseAr
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 夏季化上方的树枝和行

    我对 twig 有点陌生 我知道可以在模板中添加值并将它们收集在变量中 但我真正需要的是在总结它们之前在模板中显示汇总值 我需要像旧 symfony 中的插槽之类的东西 或者在 php 中我可以通过 ob start 来做到这一点 以某种方
  • 检测未定义的对象属性

    如何检查 JavaScript 中的对象属性是否未定义 检查属性值是否为特殊值的常用方法undefined is if o myProperty undefined alert myProperty value is the special
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 如何计算嵌套对象的深度?

    我有一个嵌套对象的示例数组 let arr id 0 children id 1 children id 2 children id 3 children id 4 children 我需要计算每个对象的深度级别 在所有对象中我也有一个pa
  • Symfony2 - 使用 eventListener 修改表单字段

    我想寻求帮助 我有一个带有下拉列表的表单 我需要根据外部输入修改选择 我想它应该与 eventListener 配合得很好 builder gt addEventListener FormEvents PRE SET DATA functi
  • Symfony2/Memcached 集成

    我正在关注一篇博客文章 链接不再可用 并将 memcached 添加到 services yml parameters memcached servers host 127 0 0 1 port 11211 services memcach
  • Symfony:为 ManyToOne-OneToMany 关系嵌入表单集合

    我正在使用 Doctrine 和这三个 相关 实体运行 Symfony 2 3 出版物 Author and 作者发表 Both Author and 出版物具有多对一关系作者发表 所以它基本上是一个多对多关系Author and 出版物但
  • Ruby 元编程方法列表?

    刚刚开始学习 Ruby 元编程 看看 Object methods 我得到 Object methods gt allocate new superclass freeze lt gt lt lt gt gt to s included m
  • 如何在 symfony 4 注销中重定向到外部网址

    只是想知道 Symfony 4 中是否有一个简单的解决方案 通常用户会注销并返回主页 但是有一个页面会检查用户当前是否在另一个站点上进行了身份验证 如果这是不正确的 我有一个链接可以将用户从我的站点中注销并重定向到外部站点 我在基于 sil
  • 如何使用 Linq 将实体表与交叉引用表连接起来

    首先我要说的是 我对 Linq 比较陌生 但我似乎很快就掌握了其中的大部分内容 但这个问题却难倒了我 我找了又找都没有结果 我使用代码优先并创建了 2 个模型 项目 和 关键字 他们之间存在多对多的关系 我的实体模型如下所示 public
  • DBNull 怎么会不等于 DBNull

    我有以下代码行 if DBNull Value Equals o o null where o is object o in row ItemArray我不断收到错误 gt Xml type List of xdt untypedAtomi
  • 如何在 Python 中创建对象的副本?

    我想创建一个对象的副本 我希望新对象拥有旧对象的所有属性 字段的值 但我想要有独立的对象 因此 如果我更改新对象的字段值 旧对象不应受到影响 要获得对象的完全独立的副本 您可以使用copy deepcopy http docs python
  • JavaScript 对象的动态深度设置[重复]

    这个问题在这里已经有答案了 给定对象属性路径的字符串 如何动态设置此属性 给定这个示例对象 var obj a b c Before 它应该能够使用如下辅助函数设置值 setToValue obj After a b 0 c 我用下面的代码
  • 让 Doctrine 默认使用结果缓存

    我正在将 Memcache 绑定到 Doctrine 看来我必须这样做useResultCache明确地在每个查询中 是否可以做到true默认情况下 能够useResultCache false 哪里不需要 创建一个显式设置的包装类 函数u
  • 为什么 Composer 更新需要访问数据库

    我正在使用 Symfony 2 8 并在启动一个简单的composer update命令 这个错误出现在我的开发环境中 我正在使用流浪虚拟机 这是错误 Doctrine DBAL Exception ConnectionException
  • 为关联数组选择哪种映射类型?学说ODM

    我有一个关于 顺便说一句 真的很棒 Doctrine ODM 的简单问题 假设您有一个类似以下的文档 Document class Test Id public id WHICHTYPE public field array 现在我想存储一
  • Symfony 2 中带有参数/参数的自定义验证器/约束

    我想创建一个类似于 GitHub 处理删除存储库的方式的验证器 要确认删除 我需要输入存储库名称 这里我想通过输入实体属性 名称 来确认删除 我需要将名称传递给约束或以某种方式访问 它 我该怎么做 你确实可以使用验证器约束来做到这一点 1

随机推荐