原则 2 限制与 DQL 的关联

2023-12-01

Doctrine 2.1 中似乎存在一个疏忽,即返回子集并不容易 为协会收集。

http://www.doctrine-project.org/docs/orm/2.1/en/reference/limitations-and-known-issues.html#retricing-associations

文档建议编写一个存储库查找方法,这是有道理的,因为这是我想做的第一件事。

但是,如果没有对实体内的 EntityManager 的引用,我无法看到如何检索关联的存储库,这似乎违背了将域与数据库分离的点?

对于这个问题有推荐的策略吗?

这是我对他们建议的解决方案的解释。

class Category
{
    protected $id;
    protected $articles; // PesistentCollection
    protected $em; // The EntityManager from somewhere?

    public function getVisableArticles()
    {
        return $this->em->getRepository('Article')
                    ->getVisibleByCategory($this);
    }
}

  1. 无论如何,在实体中拥有实体管理器都不是一件好事 (改为注入您的存储库)
  2. 类别并不是文章的唯一根,因为它无法确定您需要哪些文章,因此您需要一个文章存储库。

我会做什么:

class Category
{
    protected $id;
    protected $articles; // PesistentCollection

    public function getVisableArticles(IArticleRepository $articleRepository)
    {
        return $articleRepository->getVisibleByCategory($this);
    }
}

interface IArticleRepository
{
    function getVisibleByCategory(Category $category);
}

您的学说的存储库将实现 IArticleRepository,并且该类不会了解有关您的数据存储/学说的任何信息。

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

原则 2 限制与 DQL 的关联 的相关文章

  • 从 Symfony2 中的 http_basic auth 注销

    每当我去 admin logout 我已正确重定向到项目的根目录 但在访问时仍处于登录状态 admin 因为没有提示我输入凭据 这是我的配置 安全 yml security firewalls admin area pattern admi
  • PHP 函数 iconv 字符编码从 iso-8859-1 到 utf-8

    我正在尝试将字符串从 iso 8859 1 转换为 utf 8 但是当我找到这两个字符 和 时 函数返回 一个字符 是一个里面有两个数字的正方形 我该如何解决这个问题 我认为您正在寻找的编码是Windows 代码页 1252 http en
  • 使用 CodeIgniter 加载视图文件夹外的视图

    我需要从以下范围之外加载视图 this gt load gt view 这似乎是从base application views目录 如何从外部访问视图 application 目录 我想我将不得不延长CI Loader class这是最好的
  • PHP FTP_PUT 上传到目录

    我正在自学PHP 一本名为 PHP完全参考 PHP5 2 的书 我目前正在使用第 11 章 FTP 上传 删除 makedir 等 但遇到了一些本书未涵盖的问题 根据我的教科书 这是上传到服务器的简单代码 connect ftp conne
  • 在 PHP 中使用可变变量是不好的做法吗?

    例如 一个简单的MVC类型系统 api class method使用重写为 PHP 变量 htaccess nginx conf 然后做类似的事情
  • phpenmod 显示其他 php 版本的路径

    我的 Ubuntu 机器上安装了 php 7 0 和 7 2 当我执行时php v 它告诉我我正在使用 php 7 2 在 Apache 上我还启用了 php 7 2 当我跑步时phpenmode zip 我明白了 WARNING Modu
  • 很简单的PHP加法问题

    我想我已经关注这个问题太久了 为什么这段代码打印 no 它应该打印 yes 不是吗 我在 PHP 5 3 和 PHP 5 2 上尝试过 都打印 no See 比较浮点数 http www cygnus software com papers
  • 如何使用 PATCH 更新简单的数据库字段?

    我是 php 和 API 的新手 我正在尝试学习这些方法 但我无法执行 PATCH 或 PUT 来更新我的简单 mysql 数据库 我使用了以下代码 if isset PATCH con mysqli connect localhost r
  • 我应该在 Symfony 中哪里放置既不是控制器也不是模型的类?

    对于我的应用程序包 我需要一些既不是控制器也不是模型的类 例如 我想要一个scorecard具有诸如 技能 效率 美丽 等成员的类 此外 它可能具有诸如 meanScore 之类的成员方法 getters 这样的类在 Symfony 框架中
  • Google Closure 编译器和 multipart/form-data 不起作用

    我正在向 google 闭包编译器 API 服务发出请求 content file get contents file js url http closure compiler appspot com compile post true p
  • Twitch API - 无法使用 PHP 获取身份验证令牌

    stackoverflow 的成员们大家好 我不是一个喜欢寻求帮助的人 但在这种情况下 我认为这是解决我的问题的唯一方法 谷歌并没有给我太大帮助 所以 我的问题 我想使用 Twitch API 获取一些数据 听起来很容易 我希望是这样 下面
  • 如何将路径添加到 Apache PATH 变量?

    我在 apache2 的 custom conf 文件中设置了以下内容 SetEnv PATH PATH opt local lib mysql5 bin this is a test 但是它不起作用 当我打电话时 hey shell ex
  • php - 重定向ajax请求[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 php wordpress 中重定向 ajax 请求 I tried header Location http redirect
  • Symfony2 - 在自定义验证器中调用 EmailValidator

    我正在创建一个自定义验证器约束来验证 联系人 类似于 John Doe 电子邮件受保护 gt 遵循Cookbook http symfony com doc current cookbook validation custom constr
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module
  • 单元测试和静态方法

    阅读并学习单元测试 试图理解以下帖子 http misko hevery com 2008 12 15 static methods are death to testability 这解释了静态函数调用的困难 我不太清楚这个问题 我一直认
  • 将 Hbase 与 PHP 集成 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经安装了 Hbase 现在我正在寻找一些 PHP 库来将 hbase 与 PHP 集成 我尝试了 2 个库 第一个是我尝试与 th

随机推荐

  • android - EditText 长度过滤器无法正常工作

    首先我不得不说我已经在这里阅读了类似的问题和答案 这个问题基本上是重复的这个问题和许多其他问题 但这些问题的答案并不像我想要的那样 问题 以编程方式在我的 EditText 上设置长度过滤器 如下所示 editText setFilters
  • Windows 中的 Laravel 权限问题 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我从服务器下载了laravel到我本地的windows8 xampp gt htdocs 文件夹 以下是我收到的错误 异常处理程序中的错误 流或文件 C xampp htdocs l
  • phpmyadmin mysql 触发器语法错误

    我正在尝试编写一个 mySQL tigger 但我无法将代码放入 phpMyAdmin MySQL 中而不出现语法错误 有人能帮助我吗 Tables 我的触发器 CREATE TRIGGER after jeu insert ON jeu
  • 如何在 AS3 中完全删除影片剪辑

    我希望删除 mc 及其所有计时器 事件 有没有简单的方法可以做到这一点 当然 取消注册其计时器和事件 将其从其父级中删除 并删除对它的所有引用 也就是说 AS3是一种垃圾收集语言 因此您无法控制对象 包括MC 何时被really从记忆中删除
  • Google Sheets:如何触发随机函数? [复制]

    这个问题在这里已经有答案了 我在 Google 上有一张工作表 并一直在寻找如何使随机化脚本仅在需要时才工作的解决方案 而不是每次打开工作表或刷新它时 这是例子 让我们把工作表看成这样 B5单元有以下代码 index B1 B3 randb
  • 如何修复图像裁剪的放大尺寸?

    我想修复图像裁剪的缩放尺寸 如何做到这一点 我找到了很多并尝试了很多 但仍然无法获得正确的解决方案 裁剪的图像放大太多并变得模糊 请有人帮助我我的这个问题 我的代码是 intent putExtra crop true intent put
  • 电子邮件: Intent.ACTION_SEND 返回值是什么?

    当我启动时 startActivity new Intent Intent ACTION SEND 用于发送电子邮件 这是我可以在中测试的返回值 onActivityResult 因为 例如 如果用户单击 su 取消 退出电子邮件客户端 我
  • 读取文件并通过管道将其发送到父进程的程序

    我需要编写一个程序 创建从命令行向子进程发送文件名的管道 在子进程中读取该文件并使用管道将其发送回 父进程应该打印该文件 如果子进程中发生错误 则必须将错误发送到父进程 这是我的代码 它沿着文件文件打印一些垃圾 并且当我运行它时 它还禁用终
  • 编译Python代码和C++代码一样快吗?

    如果我用 Python 编写一个程序 然后使用以下任何编译器对其进行编译 Gordon McMillan 的安装程序 跨平台 Thomas Heller 的 py2exe Windows Anthony Tuininga 的 cx Free
  • 比较两个字符串数组而不通过每个元素进行索引的最佳方法是什么?

    是否有任何有效的方法可以用于比较两个字符串数组而无需检查每个元素 我尝试使用数组列表 构建对象 但没有一个没有显示出太大的效果 最后 要比较两个字符串 序列 表示字符序列 没有任何提高效率的技巧 你必须somehow遍历两个序列并逐个元素进
  • jQuery 根据文本更改表格单元格文本颜色

    我有一个表 其中包含包含状态的数据列 两个示例状态为 已拒绝 和 已付款 我想要做的是将 已拒绝 的文本颜色更改为红色 将 已付费 的颜色更改为绿色 对于具有此状态的单元格 我向td like td class status Html Di
  • TextView 的 Android 自定义属性[重复]

    这个问题在这里已经有答案了 可能的重复 如何读取Android中的自定义属性 最近我读到了有关自定义属性的内容 我想向 TextView 添加自定义属性 到目前为止我有 属性文件
  • 如何在 C++ 中声明和初始化 2d int 向量?

    我正在尝试做类似的事情 include
  • 笑话:如何模拟类的一个特定方法

    假设我有以下课程 export default class Person constructor first last this first first this last last sayMyName console log this f
  • Swift 5.5 AttributedString 不显示在界面中

    下面是 Swift 5 5 制作属性字符串的方法 let s Hello var attrib AttributedString s if let range attrib range of ell attrib range foregro
  • MongoDB 插入无重复项

    现在我正在运行 mongodb 我刚刚意识到 我正在插入集合 但我不确定是否可以防止重复 这是我插入的方式 function insertCompanies companyID companyURL companyAppID MongoCl
  • 带有 TabBar 的基于导航的应用程序

    我有一个基于导航的应用程序 它显示一个 TableView 您可以在其中选择一个单元格 然后它会将您带到该单元格的 详细信息视图 我希望这个视图有一个 TabBar 我可以在其中在 3 个子视图之间进行选择 我在网上找到了几个解决方案 但没
  • 如何避免在拖动具有可点击内容的 gridster.js 小部件后触发点击事件?

    我正在使用 Gridster http gridster net 能够将内容拖动到li 在我的li有一个可点击的div li a href div content div a li 所以这是我面临的问题 当我停止并释放拖动时 它将调用 di
  • 如何迭代 JSON 属性而不知道它是否是数组?

    我遇到这样的问题 API 使用 DEPARTURESEGMENT 响应我 有时仅包含一个对象 有时包含一组对象 根据具体情况 我的 foreach 循环似乎需要不同的逻辑 回应A getdeparturesresult departures
  • 原则 2 限制与 DQL 的关联

    Doctrine 2 1 中似乎存在一个疏忽 即返回子集并不容易 为协会收集 http www doctrine project org docs orm 2 1 en reference limitations and known iss