Php 如何在Doctrine2中使用本机查询生成结果?

Php 如何在Doctrine2中使用本机查询生成结果?,php,sql,orm,doctrine-orm,Php,Sql,Orm,Doctrine Orm,我需要使用本机查询,因为我需要orderbyrand() 但是,如果我使用本机查询,我需要明确地将列设置为fetch以允许对象水合,您可能会猜到,我有很多列,所以设置所有列有点无聊 有什么想法吗?您不应该使用按兰德排序()即使在本机查询中,您也应该使用 选择rand()作为rand,*。。。。按兰德订购 我认为这是很有可能的,因为条令很聪明,谢谢你,但是为什么我从来不使用这样的疑问呢?是关于性能吗?是的,当您使用order by rand()时,mysql会在每次提取新行时重新计算订单,因为对于

我需要使用本机查询,因为我需要
orderbyrand()

但是,如果我使用本机查询,我需要明确地将列设置为fetch以允许对象水合,您可能会猜到,我有很多列,所以设置所有列有点无聊


有什么想法吗?

您不应该使用
按兰德排序()
即使在本机查询中,您也应该使用

选择rand()作为rand,*。。。。按兰德订购


我认为这是很有可能的,因为条令很聪明,谢谢你,但是为什么我从来不使用这样的疑问呢?是关于性能吗?是的,当您使用order by rand()时,mysql会在每次提取新行时重新计算订单,因为对于每一行,rand()返回不同的数字。它对性能有很大影响,而在另一种情况下,它只计算一次rand(),然后只对结果排序一次