如何将“BETWEEN”函数从Mysql转换为Doctrine?

时间:2013-02-05 11:29:40

标签: symfony doctrine dql

我正在开发一些需要执行此查询的代码

(传统MYSQL)

SELECT * FROM `SistemaPuntuacions` WHERE `rankingActual` BETWEEN (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) -5 AND (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) +5 ORDER BY `rankingActual`"

基本上我在SistemaPuntuacions中有一个用户列表,他们的排名(rankingActual)。我需要向用户排名以及下面的5个用户显示5个用户。

但是在教义语言中没有“BETWEEN”,所以我被困在那里。

我可以得到一些帮助吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

好吧,实际上DQL中有is个BETWEEN。此代码段来自官方文档。

<?php
$query = $em->createQuery('SELECT u.name FROM CmsUser u WHERE u.id BETWEEN ?1 AND ?2');
$query->setParameter(1, 123);
$query->setParameter(2, 321);
$usernames = $query->getResult();

答案 1 :(得分:0)

您可以像这样使用本机SQL:

$sql = 'SELECT * FROM `SistemaPuntuacions` WHERE `rankingActual` BETWEEN (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) -5 AND (SELECT `rankingActual` FROM `SistemaPuntuacions` WHERE `user_id` = $id) +5 ORDER BY `rankingActual`';
$rows = $this->container->get('database_connection')->query($sql);