到目前为止,我认为学说没有办法选择随机行.所以我想我有一个查询来获取行数
// pseudo code
$count = SELECT COUNT(i) FROM Item i WHERE ...
Run Code Online (Sandbox Code Playgroud)
然后有一个真正的查询来使用PHP中的随机偏移来获取项目 setFirstResult
$item = (SELECT i FROM Item WHERE ...)->setMaxResults(1)->setFirstResult(rand(0, $count))->getSingleResult()
Run Code Online (Sandbox Code Playgroud)
问题是,我rand()从0或1开始?那么结束?$count还是$count-1?
setFirstResult() 是基于0的.
按照您的方法,您必须使用:
->setFirstResult(rand(0, $count - 1))->setMaxResults(1)->getSingleResult();
Run Code Online (Sandbox Code Playgroud)
资源:
我同意文件在这一点上不清楚.但是,我们可以看到Doctrine\DBAL\Query\QueryBuilder以这种方式使用它:
->modifyLimitQuery($query, $this->maxResults, $this->firstResult);
Run Code Online (Sandbox Code Playgroud)
然后将其转换为Doctrine\DBAL\Platforms\AbstractPlatform中的SQL:
final public function modifyLimitQuery($query, $limit, $offset = null)
{
...
$query .= ' OFFSET ' . $offset;
Run Code Online (Sandbox Code Playgroud)
OFFSET 在SQL中基于0,我们可以推断出setFirstResult()也是从0开始的.
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |