我正在开发一些需要执行此查询的代码
(传统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”,所以我被困在那里。
我可以得到一些帮助吗?
谢谢。
答案 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);