以下是我如何在数据库中查询一些单词
$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,我想获得符合条件的随机行,我会在查询中使用 order by 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 之后添加偏移量。
知道如何实现吗?