小编Sci*_*012的帖子

使用Doctrine和Symfony2的自定义DQL函数时出错

我使用Symfony 2和ORM Doctrine.我想创建并注册自定义DQL函数.实际上,我想在我的请求中使用SQL函数" CAST ",如下所示:

    $qb = $this->_em->createQueryBuilder();
    $qb->select('d')
       ->from('\Test\MyBundle\Entity\MyEntity', 'd')
       ->orderBy('CAST(d.myField AS UNSIGNED)', 'ASC')

    return $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)

为此,我创建了一个扩展"FunctionNode"的"CastFunction":

namespace Test\MyBundle\DQL;

use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;

class CastFunction extends FunctionNode
{
    public $firstDateExpression = null;
    public $secondDateExpression = null;

    public function parse(\Doctrine\ORM\Query\Parser $parser)
    {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
        $this->firstDateExpression = $parser->ArithmeticPrimary();
        $parser->match(Lexer::T_IDENTIFIER);
        $this->secondDateExpression = $parser->ArithmeticPrimary();
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
    }

    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
    {
        return sprintf('CAST(%s AS %s)', $this->firstDateExpression->dispatch($sqlWalker), $this->secondDateExpression->dispatch($sqlWalker));
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我在config.yml中注册了这个类:

doctrine:
    orm:
        dql:
            string_functions:
                CAST: Test\MyBundle\DQL\CastFunction
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试我的请求时,我收到以下错误:

"[语义错误]第0行,第83行附近'UNSIGNED)':错误:未定义'UNSIGNED'."

我搜索但我不知道问题在哪里! …

php mysql doctrine symfony doctrine-orm

11
推荐指数
1
解决办法
5699
查看次数

点击TinyMCE 4.0上的活动

最近我尝试在我的Web应用程序中集成TinyMce 4.0.我想点击textarea时点击事件,但它不起作用.我查看了官方文档,我尝试了以下代码:

tinyMCE.init({
   ...
   setup : function(ed) {
      ed.onClick.add(function(ed, e) {
          console.debug('Editor was clicked: ' + e.target.nodeName);
      });
   }
Run Code Online (Sandbox Code Playgroud)

出现错误:"TypeError:ed.onClick未定义".

所以,我试图直接在iframe上放一个onclick事件,但这是一个失败:

$("iframe").contents().bind('click', function(){
...
});
Run Code Online (Sandbox Code Playgroud)

你有什么想法怎么做?

javascript jquery wysiwyg tinymce

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

doctrine ×1

doctrine-orm ×1

javascript ×1

jquery ×1

mysql ×1

php ×1

symfony ×1

tinymce ×1

wysiwyg ×1