php - Doctrine 查询生成器 mysql 函数

标签 php mysql doctrine

我试图在 Doctrine Query Builder 中创建我的旧 mysql 查询之一,但我收到错误 Error: Expected known function, got 'SEC_TO_TIME'

所以我猜测该 Doctrine 不喜欢 mysql 函数 SEC_TO_TIME 但它似乎喜欢 AVGCOUNT 等。有没有什么方法可以使用 Doctrine_RawSQL 类让查询构建器运行查询?

谢谢

最佳答案

我知道这个问题很老了,但我正在为其他有同样错误的人回答这个问题。
您只需要以文件形式添加以下代码,名称为“SecToTime.php”,如下路径所示。

YourProjectName\libraries\Doctrine\DoctrineExtensions\Query\MySql\SecToTime.php

并将下面的代码放在上面名为“SecToTime.php”的文件中。

<?php

namespace DoctrineExtensions\Query\Mysql;

use Doctrine\ORM\Query\AST\Functions\FunctionNode,
    Doctrine\ORM\Query\Lexer;

class SecToTime extends FunctionNode {

    public $time;

    /**
     * @override
     */
    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) {
        return 'SEC_TO_TIME(' . $sqlWalker->walkArithmeticPrimary($this->time) . ')';
    }

    /**
     * @override
     */
    public function parse(\Doctrine\ORM\Query\Parser $parser) {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
        $this->time = $parser->ArithmeticPrimary();
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
    }

}

您需要在您的 doctrine.php 文件中添加以上文件名以便进一步使用它。我希望你知道如何添加它。

如果您有任何疑问,请随时提问。

关于php - Doctrine 查询生成器 mysql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046155/

相关文章:

mysql - MySQL 5.5.9 的奇怪外键问题

php - Drupal 7.x : how to create a new node with PHP input format?

php - 使用 PHP 快速将 SQL 查询中的所有数据放入数组中

php - 在zend框架中获取用户ip地址

mysql - 环回模型关系未正确保存?

php - Doctrine manyToMany SQLSTATE [HY000] : General error: 1005 Can't create table (errno: 150)

php - 使用 Javascript 和 PHP 将表单数据提交到两个位置?

mysql - 如何使用 Django 的 ORM 创建临时表以按两个条件对同一列进行排序?

php - IIS + PHP + MySQL 返回 500 - 内部服务器错误

symfony - 通过Symfony 2.1中的postUpdate监听器找出发生了什么变化