【发布时间】:2013-08-25 22:31:58
【问题描述】:
我正在尝试为 DQL 实现自定义 DATE 函数,代码如下:
namespace SwingBy\SwingByBundle\DQL;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
/**
* Date ::= "DATE" "(" ArithmeticPrimary ")"
*/
class Date extends FunctionNode {
public $dateTimeExpression = null;
public function parse(\Doctrine\ORM\Query\Parser $parser){
$parser->match(Lexxer::T_IDENTIFIER);
$parser->match(Lexxer::T_OPEN_PARENTHESIS);
$this->dateTimeExpression = $parser->ArithmeticPrimary();
$parser->match(Lexxer::T_CLOSE_PARENTHESIS);
}
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker){
return "DATE(" . $this->dateTimeExpression . ")";
}
}
这是 config.yml 中的配置:
doctrine:
orm:
dql:
datetime_functions:
date: SwingBy\SwingByBundle\DQL\Date
这是错误:
The autoloader expected class "SwingBy\SwingByBundle\DQL\Date" to be defined in file
"/Applications/MAMP/htdocs/swingby_dev2.3/src/SwingBy/SwingByBundle/DQL/Date.php". The
file was found but the class was not in it, the class name or namespace probably has a
typo.
我无法找到解决方案,我尝试了几种不同的命名空间,但没有任何效果。
Symfony 版本:2.3
【问题讨论】:
-
命名空间 SwingBy\SwingByBundle\DQL;
-
已经试过了,还是一样的错误
-
不太可能。错误信息很清楚。确保您查看的是正确的文件。
标签: symfony doctrine-orm dql