php - 如何在 MySQL 中使用用户定义的变量?

标签 php doctrine-orm

我有一个改编自 Rank function in MySQL 的 sql 查询我想将它与 Doctrine 一起使用。
系统似乎不喜欢我的查询,我不知道从哪里开始修复它。

这个查询在 MySQL 本身中运行良好,当我将它与 Doctrine 一起使用时,我得到一个语法错误。

SELECT    l.*,
          @points:=l.playerPoints + l.organisationPoints,
          @curRank := if(@points <> @lastPoints, @curRank + 1, @curRank) AS rank,
          @lastPoints:= @points as points
FROM      leaderboard l, (SELECT @curRank := 0) r, (SELECT @lastPoints := 0) lp, (SELECT @points := 0) p
ORDER BY  l.playerPoints + l.organisationPoints DESC;

[Syntax Error] line 0, col 10: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got '@'

我正在使用以下 PHP 代码:

$EntityManager->createQuery(...);

是否可以用 Doctrine 2 来处理这个问题?
原则 1(MySQL User defined variable within Doctrine and Symfony)似乎是可能的。

最佳答案

EntityManager::createQuery 用于 DQL 查询,我认为 Native SQL是您所需要的(允许您执行任意查询并将结果映射到学说实体)。

关于php - 如何在 MySQL 中使用用户定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21614137/

相关文章:

php - PDOException 在 Zend Framework 2 + Doctrine 上找不到驱动程序

sql-server-2008 - 将 Symfony2 连接到 MS SQL Server

php - 在 Doctrine\ORM\PersistentCollection 中定义自定义方法

php - php 和curl 的非阻塞请求不适用于 sleep

php - 如何使用 PHP 获取 MySQL 数据库表的当前快照并将其通过 FTP 传输到远程服务器

php - Firebase 显示成功但不发送云消息 (Android - PHP)

php - MySQL Inner Join 涉及三个表

php - 如果未设置图像,则不会发出错误

php - 如何使用 php 代码将数据库表中的值获取到数组?

php - 期望学说查询生成器有一个结果或没有结果,我应该使用什么?