Zend Select 具有自连接覆盖字段

2024-02-18

帖子和评论存储在同一个表中。因此,为了获取每个帖子及其评论,我们这样做:

    $posts = $this->select()->setIntegrityCheck(false)
                        ->from(array('post' => 'Posts'), array('*'))
                        ->where('post.idGroup = ' . $idGroup)
                        ->where('post.idTopic IS NULL')
                        ->order('post.date DESC')
                        ->limit($resultsPerPage, $resultsPerPage * ($page - 1))
                        ->joinLeft(array('user' => 'Users'), 'post.idUser = user.idUser', 
                            array('idUser', 'fname', 'lname', 'profileUrl', 'photoUrl'))
                        ->joinLeft(array('comment' => 'Posts'), 'comment.idTopic = post.idPost')
                        ->query()->fetchAll();

问题是生成的数组是扁平的,并且评论数据覆盖了帖子数据,这是返回内容的示例:

[1] => Array
    (
        [idPost] => 13
        [idTopic] => 11
        [idGroup] => 1
        [idUser] => 84
        [postContent] => Hello my name is Mud.
        [postUrl] => 13/hello-my-name-is-mud
        [postVotes] => 
        [postScore] => 
        [date] => 2009-07-21 16:39:09
        [fname] => John
        [lname] => Doe
        [profileUrl] => john-doe
        [photoUrl] => uploads/userprofiles/0/84/pic84_14
    )

我们希望结果更像是这样的:

    [1] => array(
            [post] => array(
                [0] => array(
                    idPost => 12,
                    postContent => This is a post...,
                    idGroup => 1
                    ...
                )
            ),
            [user] => array(
                [0] => array(
                    userName => JohnDoe
                    ...
                    )
                ),
            [comments] => array(
                [0] => array(
                    idPost => 15,
                    postContent => This is a comment...,
                    idGroup => 1
                    ...
                ),
                [1] => array(
                    idPost => 17,
                    postContent => This is another comment...,
                    idGroup => 1
                    ...
                )
            )
        )

任何其他解决方案的提示也非常受欢迎。

Thanks.


如果您将第二个联接中的所有列别名为 posts(例如 idPost 为 child_idPost... 等),您将获得许多作为父行的行以及第二行的列。这大约是您能得到的最接近的结果。然后,您可以从第一行获取父数据,然后循环遍历后续行以获取一对多数据。

否则,只需执行两次查询,一项针对父项,一项针对子项。无论如何,它可能比创建那个大结果表更快。

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

Zend Select 具有自连接覆盖字段 的相关文章

  • SQL Server 中的嵌套事务

    sql server 允许嵌套事务吗 如果是的话那么交易的优先级是什么 来自 SQL Server 上的 MSDN 文档 嵌套交易 http msdn microsoft com en us library ms189336 SQL 90
  • 按原样将 SQL 保存到 YAML

    我想以我自己的格式将 SQL 保存到 YAML 文件 如下所示 1 sql SELECT DISTINCT p id product p price AS price sp reduction AS discount FROM 我使用 YA
  • 手动更改postgresql中查询的执行计划?

    是否可以在postgresql中手动更改执行计划的操作顺序 例如 如果我总是想在过滤之前进行排序操作 尽管这在 postgresql 的正常使用中没有意义 是否可以通过例如手动强制执行该操作改变运营的内部成本 如果我实现自己的功能呢 是否可
  • 如何搜索表中的所有列?

    如何在 SQL Server 中搜索表的所有列 SELECT FROM yourtable WHERE val IN field1 field2 field3 field4 如果您正在寻找精确的全场比赛 如果你正在寻找子字符串匹配 你将不得
  • Sql Server 的夏令时

    我们正在使用一个以 C Unix 格式存储日期的旧应用程序 C 时间基本上是自 1970 年 1 月 1 日以来的秒数 日期以整数形式存储在 SQL Server 数据库中 我正在为使用这些日期的报告编写视图 到目前为止 我正在使用以下命令
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • 如何检查oracle数据库中分配给模式、角色的对象的权限(DDL、DML、DCL)?

    大多数时候 我们都在与愚蠢的事情作斗争 以获取架构 角色及其对象的权限详细信息 并尝试找到一些简单的方法来获取有关它的所有详细信息以及伪查询代码 以批量生成授予语句以供进一步使用执行 所以我们在这里得到它 关于数据字典视图前缀的一些简单介绍
  • SQL Server Like 查询不区分大小写

    Query SELECT from Table 2 WHERE name like Joe Output 1 100 Joe 2 200 JOE 3 300 jOE 4 400 joe 为什么不区分大小写 Problem 查询不区分大小写
  • 在 jQuery 中获取 SELECT 的值和文本[重复]

    这个问题在这里已经有答案了 可能的重复 获取选择框中选定选项标签的值 https stackoverflow com questions 7380604 getting the value of the selected option ta
  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • 如何在 PostgreSQL 中使用条件和子查询创建唯一索引?

    我使用 PGSQL 并尝试添加下面的索引 CREATE UNIQUE INDEX fk client ON user client fk client WHERE fk client NOT IN SELECT fk client FROM
  • 如何将事物的组合映射到关系数据库?

    我有一个表 其记录代表某些对象 为了简单起见 我假设该表只有一列 这是唯一的ObjectId 现在我需要一种方法来存储该表中的对象组合 组合必须是唯一的 但可以是任意长度 例如 如果我有ObjectIds 1 2 3 4 我想存储以下组合
  • SQL Server 2012:有条件地增加计数器用户 ROW_NUMBER()

    我正在尝试申请ROW NUMBER 根据特定条件增加计数器 我的数据如下所示 目标计数器是Prep column id DSR PrepIndicator Prep 1662835 1 1 1 1662835 14 2 2 1662835
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • 自动提取数据 - Oracle SQL Developer

    我通过 SQL Developer 连接到 Oracle 数据库 我想编写一个返回每月数据集的查询 然后将该数据提取到分隔文本文件中 我知道如何做到这一点就好了 我想知道是否有一种方法可以编写一个脚本来运行查询并在一年内逐月提取数据 这样我
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • SQL Server - 将行连接到逗号分隔的列表中

    假设我有一个临时表 如下所示 Id Value 1 1 1 2 1 3 2 1 2 2 我希望我的桌子是这样的 Id ValueList 1 1 2 3 2 1 2 所以基本上我需要将我的值分组为逗号分隔的列表 我已经尝试过以下操作 SEL
  • java库维护数据库结构

    我的应用程序一直在开发 所以偶尔 当版本升级时 需要创建 更改 删除一些表 修改一些数据等 通常需要执行一些sql代码 是否有一个 Java 库可用于使我的数据库结构保持最新 通过分析类似 db structure version 信息并执
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER

随机推荐

  • iOS 自动在文本字段中添加连字符

    我正在学习 iOS 开发 并且很难弄清楚控件的各种事件 对于测试 我有一个 UITextField 用户需要输入以下格式的字符串 XXXX XXXX XXXX XXXX 我希望能够检查每个条目后字段中的文本有多长 并查看是否需要附加连字符
  • Docker:来自守护程序的错误响应:删除 myvol:卷正在使用中

    当我尝试删除卷时 出现此错误 来自守护程序的错误响应 删除 myvol 卷正在使用中 2a177cb40a405db9f245fccd776dcdeacc d266ad624daf7cff510c9a1a1716fe 但两者docker p
  • 当没有可行的解决方案时,Accord.net Cobyla 求解器返回成功

    我正在使用 Accord Net 的 Cobyla 求解器来解决一个相当简单的非线性问题 在某些情况下 问题没有可行点 当我运行一个明显不可行的简单问题时 即使解决方案不可行 求解器也会返回 成功 考虑以下用 F 编写的示例 open Sy
  • 如何改变ggplot中的线宽?

    数据链接 使用的数据 https www dropbox com s yt4l10nel5bwxoq GTAP ConsIndex csv My code ccfsisims lt read csv file F Purdue Univer
  • python 类变量在 __init__ 中不可见?

    这段代码产生了一条错误消息 令我惊讶的是 class Foo object custom 1 def init self custom Foo custom self custom custom x Foo 有人可以提供启示吗 It s F
  • Spring登录时显示错误消息

    我正在使用 Spring security 来验证用户身份 我创建了一个自定义身份验证提供程序 现在我想知道如何从提供程序获取错误消息到我的表单中 这是我的自定义身份验证提供程序中的authenticate 方法 Override publ
  • 如何让tomcat爆war文件

    参考tomcat 和提取的文件 https stackoverflow com questions 14945820 tomcat and extracted files 14965275 14965275我已将 server xml 配置
  • 如何查找哪个脚本修改了所选属性的css

    有没有办法获取哪些脚本修改了选定的 DOM 元素以及修改顺序的信息 在我的网站上 我修改了 div A 的宽度 但是 似乎其他一些脚本在那之后修改了该宽度 但我不知道它是哪个脚本 我怎样才能找到它 编辑 经过更多搜索后 我发现在 fireb
  • java中的自定义键盘快捷键

    I am developing a java swing application I want to add a keyboard shortcut say CTRL H This should perform the same actio
  • 在 Internet Explorer 7 中使用 z-Index 定位 div

    我有两个相对定位的 DIV A 和 B a 有一个名为 A 的 DIV 作为子元素 它是绝对定位的 z 索引为 1000 DIV B 是 DIV B 的子元素 也是绝对定位的 Firefox 按预期呈现 A B B A 从距用户最近到最远
  • Boost.MultiIndex:如何进行有效的集合交集?

    假设我们有一个data1 and data2 我怎样才能将它们与std set intersect struct pID int ID unsigned int IDf postition in the file pID int id co
  • UNIQUE 约束是否会自动在字段上创建索引?

    我是不是该定义一个单独的索引 on the email列 用于搜索目的 或者索引是 自动 添加的UNIQ EMAIL USER约束 CREATE TABLE IF NOT EXISTS customer id int 11 NOT NULL
  • 为什么我的node_modules中有@angular/core,但仍然出现此错误?

    我从 angular io 下载了一个示例项目 从这里https angular io generated zips cli quickstart cli quickstart zip https angular io generated
  • Flutter:如何更新 firestore 中数组中的数组

    消防银行 https i stack imgur com 5R9Qz png 我需要更新索引数组 0 中的状态字段 其中时间 8 00 我需要将此状态传递给 0 只是该数组位于图像中的矩阵内被视为计时器 如何通过将 status 1 字段更
  • CsvHelper - 在同一 CSV 中读取不同的记录类型

    我正在尝试从具有以下结构的 CSV 文件中读取两种类型的记录 PlaceName Longitude Latitude Elevation NameString 123 456 56 78 40 Date Count 1 1 2012 1
  • 确定一个数组是否包含在另一个数组中

    如何确定一个数组是否包含在另一个数组中 逐个元素且按顺序 我已经在 MSVS 2010 中编写了下面的程序 但不太确定如何完成确定一个数组是否出现在另一个数组中的布尔函数 void isContained int ar1 int ar2 i
  • x&&y||z 是如何计算的?

    Given int x 1 y 2 z 您能解释一下为什么结果是 x y z is 1 x y 1 x y z 1 x y z 相当于 x y z if x 1 and y 2 then x y is 1 2这是true true这是tru
  • 如何在 Neo4j Cypher 上使字符串包含过滤器

    我需要在 Neo4J 中创建一个包含过滤器的字符串 这个想法很简单 一个很好的例子是 我需要从人员数据库中检索姓名中包含汽车子字符串的所有人员 我怎样才能做到这一点 作为附加更新 从 neo4j 3 0 开始 它可能更易于使用 MATCH
  • DirectX/OpenGL 中的三角形绘制顺序

    3D API 中绘制三角形的顺序是否保证与其在索引缓冲区中的顺序相同 例如 如果我在一次绘制调用中有两个重叠的三角形 并且禁用深度测试 那么第一个或第二个三角形最终是否可见 或者我是否需要发出单独的绘制调用以确保第二个三角形出现在第一个三角
  • Zend Select 具有自连接覆盖字段

    帖子和评论存储在同一个表中 因此 为了获取每个帖子及其评论 我们这样做 posts this gt select gt setIntegrityCheck false gt from array post gt Posts array gt