【发布时间】:2014-02-28 13:22:43
【问题描述】:
我在 symfony2 框架中使用了学说。我想选择单个随机字段。 我不想使用本机查询或使用 PHP 随机获取。
我试着按照
https://gist.github.com/Ocramius/919465
config.yml中连接的扩展函数
orm:
...
entity_managers:
default:
...
dql:
numeric_functions:
rand: MyProject\MyBundle\DQL\Rand
我尝试在控制器中调用查询
$product= $em->createQueryBuilder('p')
->select('w')
->from('MyBundle:Product', 'p')
// ->orderBy('RAND ()') // I tried so
->addSelect('RAND() as HIDDEN rand') // and so
->orderBy('rand')
->getQuery()
->getSingleResult();
我也试过了
$product = $em->createQuery('SELECT p FROM MyBundle:Product p ORDER BY RAND()')
->setMaxResults(1)
->getSingleResult();
我得到错误:
Error: Expected end of string, got '('
请注意,“ASC”在查询中的“RAND()”之后。 我尝试调用 orderBy('RAND()', ''),但没有成功...
【问题讨论】:
-
Related article on
ORDER BY RAND()警告
标签: symfony doctrine-orm dql