【发布时间】:2015-01-06 22:15:47
【问题描述】:
我有实体 Travel,比如说它有 30 个条目:
1-
2-
3-
4-
.
.
.
30-
我想随机选择6个实体,例如:2、14、7、25、16、1
我试过这段代码,但它可以工作,但结果总是按顺序 ASC (3,4,5,6,7,8,) 显示。
public function getRandomTravelsFrontend()
{
$count = $this->createQueryBuilder('t')
->select('COUNT(t)')
->getQuery()
->getSingleScalarResult();
$qb = $this->createQueryBuilder('t')
->leftJoin('t.image', 'i')
->addSelect('i')
->Where('t.enabled = 1')
->setMaxResults(6)
->setFirstResult(rand(0, $count - 6));
return $qb->getQuery()->getResult();
}
如何按随机顺序显示结果?是否可以像这样选择 6 个实体:2、14、7、25、16、1?
【问题讨论】:
-
该查询总共返回多少行(如果你不
LIMIT它)? -
使用随机数生成器对行进行排序,参见:stackoverflow.com/questions/23112845/…
-
@zerkms ,你的意思是如果我删除
->setMaxResults(6)还是什么?如果我删除它,行数每次都会改变,有时是 2 行,有时是 7 行...
标签: php symfony doctrine-orm