【问题标题】:Order a "sub level" record - ORM订购“子级别”记录 - ORM
【发布时间】:2013-08-10 01:14:57
【问题描述】:

假设我们使用像 Doctrine 和 Symfony2 这样的 ORM 作为框架。

如果有三个实体(A、B、C)以这种方式相互关联:

A --[1-m]-- B
B --[m-1]-- C

现在假设C 有一个属性(表格列),它告诉我们C 记录的正确顺序(用于用户显示目的)。
最后,我们使用 ORM 获取了一个 A 类型的对象。

A 开始排序的返回C 对象的最佳方法是什么?我是否必须编写自定义查询并因此失去 ORM 特征?

通知

如果您没有遇到问题,请记住,要检索 C 对象,您必须通过 B 对象,因为订单字段位于 C 对象上,因此可以以不同的方式排序,并且,当然,“复制”命令也到 B 对象不是一个好的解决方案

【问题讨论】:

    标签: oop orm


    【解决方案1】:
    SELECT a, b, c
    FROM Mapping:EntityA a
    JOIN a.b b
    JOIN b.c c
    ORDER BY b.prop1 ASC, c.prop1 ASC
    

    这就是它的全部内容。属于b 的所有c's 都是有序的,而属于a 的所有b's 也是有序的。

    【讨论】:

    • 首先,谢谢,但我完全知道如何进行查询(而且,正如我上面提到的,我想知道是否有使用 Objects 的替代方法,我想答案是否定的)。但是,您的查询不太好:B 没有(我也不想添加)用于进行排序的列或属性。
    • 还有一种使用对象的替代方法,但是数据库在执行这样的操作时要快得多。所以这是首选。因此,请让您的问题更具建设性,或者如果您愿意,可以接受这个并提出一个新问题,并解释特定的用例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多