问题标签 [doctrine-query]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
doctrine-orm - 学说2:不同的查询方式,不同的结果
有人可以解释一下,为什么我会得到不同的结果?
只有 $result1 持有 $user,这是我所期望的,其他都是空的。怎么了?(请不要说我需要调用 $em->flush(); )
mysql - 返回关系的整个列表匹配的所有行(而不是任何组合)
具有以下简单的表结构:
如果我有一个标签 ID 列表,我将如何获取每一行数据,其中列表中的每一行标签都与匹配的数据行相关,而不是其子集?
这是我现在不起作用的查询:
具体来说:这个不起作用,因为它将返回与标签 1 或 2 相关的任何数据行。不是 1和2。
mysql - 如何使用 DQL 执行关系除法?
当尝试使用 Doctrine 1.2 执行关系除法时,我收到一个“重复别名”错误,看起来像是在下面的查询中找到的 DISTINCT:
如果我从查询中删除DISTINCT,它会运行但不会得到我想要的。有没有合适的方法让 Doctrine 解决这个问题?
具体代码:
symfony - 具有相关实体字段的 where 子句的 Doctrine 查询构建器
我有两个实体:Image
和Tags
,具有多对多关系。
Image
有一些字段:code
, description
,author
并tags
实现了多对多关系。
Tag
只有两个字段:name
和images
.
我正在构建一个非常通用的搜索表单,只有一个输入字段,您可以在其中编写任何文本,然后将返回Image
在其或字段或其任何标签字段中包含该文本的任何内容。code
description
author
name
对于非关系字段,这很容易。我在我的控制器中有(query
只是用于搜索的 de GET 参数):
现在,我不知道如何name
处理tags
.
我曾尝试在将Image
所有标签作为字符串返回的实体中使用虚拟字段,但稍后我无法在查询生成器中使用它。
非常感谢!
mongodb-php - Doctrine ODM: 不能素数->(true) getSingleResult(); 引发光标错误
我有一个文档,该文档具有另一个文档的 ReferenceMany 属性。引用设置正常,数据从查询返回正常,但 arraycollection 中的每个文档都作为代理返回。在这个网站上,我看到有人提到我应该添加->prime(true)
以返回实际引用的文档。
当返回文档的 ArrayCollection 时,我正在运行一个已提交给服务器的 id 循环,以将它们从引用的集合中删除。该removeElement
方法不起作用 b/c 返回的文档是代理,我正在比较实际文档与那些代理。所以基本上我正在尝试:
- 查找单个文档
- 强制
ReferenceMany
属性中的所有文档为实际文档而不是代理文档 - 循环遍历我的 id 数组并加载每个文档
- 将文档发送到 removeElement 方法
在下面的第一个getSingleResult
查询方法中,我收到一个错误cannot modify cursor after beginning iteration
。我在这个网站上看到一个帖子提到你应该初始化结果,以便获取实际文档而不是代理,在他的示例中,他使用了getSingleResult
.
如果我->prime(true)
从第一个查询中删除,它不会引发错误,但它实际上并没有删除任何元素,即使我在方法上设置断点,比较两个文档,并且数据完全相同,除了$this->target
它们是Location
代理文档,加载的是一个实际的Location
文档。
我可以以某种方式启动单个结果,以便我可以ArrayCollection
正确使用这些方法,还是我需要做一些 for 循环并比较 id?
更新
所以这是一个显示我遇到的问题的更新。虽然下面的解决方案只使用 MongoId(s),但当我提交一个实际的 Document 类时,它从未真正删除该文档。ArrayCollection 作为 PersistentCollection 从 Doctrine 中返回。中的每个元素$this->coll
都属于此 Document 类型:
实际的文件是这样的:
该removeElement
方法执行这样的array_search:
所以因为对象类型并不完全相同,即使代理对象应该是从我创建的实际 Document 继承的,也$key
总是返回 0(false),因此不会删除该元素。两个文档之间的所有内容都完全相同,除了对象类型。
就像我说的,我想我可以通过 MongoId 来做到这一点,但是为什么不能通过提交整个对象来工作呢?
doctrine-orm - Doctrine 2 查询构建器与实体持久性能
摘要:哪个更快:更新/刷新实体列表,或在每个实体上运行查询生成器更新?
我们在 Doctrine ORM(2.3 版)中有以下情况。
我们有一个看起来像这样的表
我们想用这张表对一个虚构农场的报告进行排序。问题是用户希望客户订购动物(例如考拉、大象、狼、牛)。现在存在使用 CONCAT 或 CASE 为 DQL 添加权重的可能性(例如 0002wolf、0001elephant)。以我的经验,这要么很难构建,而且当我让它工作时,结果集是一个数组而不是一个集合。
因此,为了解决这个问题,我们为每条记录添加了一个“权重”字段,并且在运行选择之前,我们为每条记录分配了一个权重:
这完美地工作。为了避免竞争条件,我们在事务块中添加了这个:
这更加强大,因为它可以处理生成相同报告的多个用户。或者,可以像这样对实体进行加权:
问题:
1)这两个例子中哪一个会有更好的表现?
2)考虑到我们需要一个集合,是否有第三种或更好的方法来做到这一点?
请记住,这只是一个示例——在内存中对结果集进行排序不是一个选项,它必须在数据库级别完成——真正的语句是一个 10 表连接和 5 个 orderby。
mysql - Expression mysql NOW() in Doctrine QueryBuilder
How to use the expression mysql NOW() in doctrine querybuilder?
php - 如何使用多个数据库模式管理 Doctrine 查询
我有一个实体 A 与 B 的 ManyToOne 关系,但 A 和 B 不属于同一个数据库模式。
实体“A”属于 MyBundle 包,实体“B”属于 MyOtherBundle 包。
官方文档解释了如何使用不同的连接:多个模式 = 多个实体管理器。但就我而言,我想加入这两个实体。
通过做 :
或者
我只调用我的一个存储库,我猜他无法获得另一个,因为在我的 config.yml 中我只能选择一个连接。
结果:哎呀,好像出了点问题。
1/1ReflectionException: 类 FQCN\Of\MyBundle\Entity\B 不存在...
“我知道它不存在,伙计,我想让你看看现在的好地方:比如在 FQCN\Of\MyOtherBundle\Entity\B”
如何强制通往我的实体“B”的路径?
doctrine-orm - 如何用多个连接编写这个学说查询?
我有一个实体 Person (p),它与与实体 NotificationType 相关的实体 Notifications 相关。
- 有些人收到了类型 1 的通知 (notification_type_id = 1)。
- 有些已收到通知,但不是类型 1
- 有些根本没有收到消息。
在全球范围内,我想检索那些尚未收到类型 1 消息的人。
我写了这个查询:
但是通过这个查询,我只得到那些收到通知但不是类型 1 的人,我没有得到那些根本没有收到通知的人。
我怎样才能纠正我的查询以获得那些?
非常感谢你的帮助