【问题标题】:How do you hydrate a result with Native Query in Doctrine2?您如何使用 Doctrine2 中的 Native Query 来补充结果?
【发布时间】:2011-06-17 09:25:05
【问题描述】:

我需要使用本机查询,因为我需要 ORDER BY RAND(),而且即使使用自定义函数,目前也不可能 (afaik)。

但是,如果我使用原生查询,我需要显式设置要获取的列以允许对象水合,你可能会猜到,我有很多列,所以设置它有点无聊。

有什么想法吗?

【问题讨论】:

    标签: php sql orm doctrine-orm


    【解决方案1】:

    即使在本机查询中,您也不应该使用ORDER BY RAND(),您应该使用

    SELECT rand() as rand,* .... ORDER BY rand

    我认为教义是很有可能的

    【讨论】:

    • 聪明,谢谢,但是为什么我从不使用这样的查询?是关于性能吗?
    • 是的,当您使用 rand() 排序时,mysql 每次获取新行时都会重新计算顺序,因为对于每一行,rand() 返回不同的数字。它对性能有很大的影响,而在另一种情况下,它只计算一次 rand(),然后只对结果排序一次。
    • 好的,谢谢你的解释,它适用于学说
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多