これが私のデータベースにいくつかの単語を問い合わせる方法です
$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の後にオフセットを追加できませんでした。
これをどのように達成できるか考えていますか?