你需要声明第二个参数,并像这样使用Lexer:

namespace HQF\Bundle\PizzasBundle\DQL;

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

use \Doctrine\ORM\Query\Lexer;

class MysqlRound extends FunctionNode

{

private $firstExpression = null;

private $secondExpression = null;

public function parse(\Doctrine\ORM\Query\Parser $parser)

{

$lexer = $parser->getLexer();

$parser->match(Lexer::T_IDENTIFIER);

$parser->match(Lexer::T_OPEN_PARENTHESIS);

$this->firstExpression = $parser->ArithmeticPrimary();

// parse second parameter if available

if(Lexer::T_COMMA === $lexer->lookahead['type']){

$parser->match(Lexer::T_COMMA);

$this->secondExpression = $parser->ArithmeticPrimary();

}

$parser->match(Lexer::T_CLOSE_PARENTHESIS);

}

public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)

{

// use second parameter if parsed

if (null !== $this->secondExpression){

return 'ROUND('

. $this->firstExpression->dispatch($sqlWalker)

. ', '

. $this->secondExpression->dispatch($sqlWalker)

. ')';

}

return 'ROUND(' . $this->firstExpression->dispatch($sqlWalker) . ')';

}

}

编辑

许多Doctrine2扩展已被写入here.所有学分都归功于@beberlei的出色工作.许多功能都可用(IFELSE,IFNULL,NULLIF,COS,ACOS等等)但不是全部(ROUND,GREATEST或LEAST都缺失了,但如果需要,你仍然可以自己编写它们.)

php自定义函数指定参数类型,php – Doctrine:如何添加带可选参数的自定义函数?...相关推荐

  1. python如何定义带有可选参数的函数_python中如何正确调用带可选参数的函数

    我是python的初学者,遇到了一个需要可选参数的函数的问题. 此函数获取可变数量的文件路径作为参数,可以是2到n个参数. 之后,一定数量的可选参数可以传递给这个函数. 我试过做这样的事:def co ...

  2. parser.add_argument(),里面的参数,如果有--,表示是可选参数,没有--的话,意味着是必选参数

    parser.add_argument(),里面的参数,如果有–,表示是可选参数,没有–的话,意味着是必选参数,在运行时必须输入,default是没有用的. 其它的基本解释可以参考python add ...

  3. python中可选参数_带可选参数的Python函数

    我试图改进Python中的函数.它需要几个参数,其中一些可能会丢失. def some_function (self, a, b, c, d = None, e = None, f = None, g ...

  4. c语言带默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

    (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() 函数 ...

  5. c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

    描述 (文章来源:嵌入式时代) 使用C++开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y=3); 在调用 fun() 时第二个参数可以不传递,此时 fun() ...

  6. java参数类型不同_java – 两种不同的参数类型(将Object强制转换为Type)

    我想调用一个方法,但参数可以是Button或ImageButton.我用不同的参数类型作为对象调用该方法两次. 在我的方法attributesOfButton中,我想分配相应的按钮类型,如下面的代码所 ...

  7. go如何实现可选参数

    大家好,我是peachesTao,今天我们来聊一聊go的函数可选参数话题 go语言设计的时候函数就不支持默认参数,以下为go语言之父Rob Pike关于这个设计的一段话: One feature mi ...

  8. Python函数参数类型*、**的区别

    函数接收参数为元组 例如 def myfun(*args): #相当于 def myfun(1,2,3) ==> args 就相当于(1,2,3) for a in args: print(a) ...

  9. python函数参数类型及顺序_python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

  10. python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

最新文章

  1. RGB图像重建非刚性物体三维形状(CVPR)
  2. Nginx+MSM+Tomcat做负载均衡,session共享
  3. spark 源码分析之七--Spark RPC剖析之RpcEndPoint和RpcEndPointRef剖析
  4. WinAPI: CreateDirectoryEx - 根据模版建立文件夹
  5. 空指针错误 java.lang.NullPointerException 浅谈
  6. OpenGL Cube Map立方体贴图的实例
  7. kubernetes1.8.4 安装指南 -- 11. 安装kubernetes dashboard
  8. Redis系列(十四)、Redis6新特性之RESP3与客户端缓存(Client side caching)
  9. JAVA day02 流程控制语句
  10. 《Dreamweaver CS6完美网页制作——基础、实例与技巧从入门到精通》——1.2 网页的基本构成元素...
  11. Microsoft Productivity Hub 2010 安装部署配置(三)
  12. 管理感悟:绝不容忍有问题没行动
  13. php中求10递归算法,PHP递归算法的应用(含示例)
  14. 游戏任务系统设计思路
  15. 删除Directory Opus后从快捷方式无法转到文件夹
  16. 手机上的环境光传感器
  17. Spark MLBase分布式机器学习系统入门:以MLlib实现Kmeans聚类算法
  18. sklearn中shuffle的用法
  19. Raspberry Pi 4和 Raspberry Pi 4B的区别_8GB内存的树莓派4来啦!国内售价589元,官方还推出配套64位系统...
  20. 地震勘探 01:地震波001

热门文章

  1. Android 功能系列篇
  2. CSS 块状元素和内联元素
  3. Debian - NFS搭建 + 测试
  4. h3c Vlan和Trunk实验
  5. 十一、K8s 健康性检查
  6. IPv6 gre隧道、路由协议综合实验(华为设备)
  7. OSPF区域内拓扑计算原理与实验
  8. ETH-TRUNK链路原理和实验
  9. 浅议PIM(一文看懂PIM)
  10. QUIC 将会是 WebRTC 的未来么?