如何用教义随机选择
2022-08-30 12:07:37
以下是我查询数据库以获取一些单词的方法
$query = $qb->select('w')
->from('DbEntities\Entity\Word', 'w')
->where('w.indictionary = 0 AND w.frequency > 3')
->orderBy('w.frequency', 'DESC')
->getQuery()
->setMaxResults(100);
我正在使用mysql,我想获得与条件匹配的随机行,我会在我的查询中使用rand()的顺序。
我发现这个类似的问题,它基本上表明,由于理论不支持ORDER BY RAND,因此您可以随机化主键。但是,在我的情况下无法做到这一点,因为我有一个搜索条件和一个where子句,因此不是每个主键都满足该条件。
我还发现了一个代码片段,建议您使用 OFFSET 来随机化行,如下所示:
$userCount = Doctrine::getTable('User')
->createQuery()
->select('count(*)')
->fetchOne(array(), Doctrine::HYDRATE_NONE);
$user = Doctrine::getTable('User')
->createQuery()
->limit(1)
->offset(rand(0, $userCount[0] - 1))
->fetchOne();
我有点困惑,这是否会帮助我解决在我的情况下随机缺乏对订单的支持。我无法在setMaxResult之后添加偏移量。
任何想法如何做到这一点?