Skip to content
Browse files

Merge pull request #61 from smottt/master

MySQL CHAR_LENGTH function.
  • Loading branch information...
2 parents c84999e + aa9f43a commit ee131dd8e5a61322d272be66e39dd27b223f38b4 @beberlei committed Jan 22, 2012
Showing with 52 additions and 0 deletions.
  1. +52 −0 lib/DoctrineExtensions/Query/Mysql/CharLength.php
View
52 lib/DoctrineExtensions/Query/Mysql/CharLength.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * DoctrineExtensions Mysql Function Pack
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to kontakt@beberlei.de so I can send you a copy immediately.
+ */
+
+namespace DoctrineExtensions\Query\Mysql;
+
+use Doctrine\ORM\Query\AST\Functions\FunctionNode,
+ Doctrine\ORM\Query\Lexer;
+
+/**
+ * "CHAR_LENGTH" "(" SimpleArithmeticExpression ")"
+ *
+ * @category DoctrineExtensions
+ * @package DoctrineExtensions\Query\Mysql
+ * @author Metod <metod@simpel.si>
+ * @license BSD License
+ */
+class CharLength extends FunctionNode
+{
+ private $expr;
+
+ /**
+ * @override
+ */
+ public function parse(\Doctrine\ORM\Query\Parser $parser)
+ {
+ $parser->match(Lexer::T_IDENTIFIER);
+ $parser->match(Lexer::T_OPEN_PARENTHESIS);
+
+ $this->expr1 = $parser->ArithmeticExpression();
+
+ $parser->match(Lexer::T_CLOSE_PARENTHESIS);
+ }
+
+ /**
+ * @override
+ */
+ public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
+ {
+ return 'CHAR_LENGTH('.$sqlWalker->walkArithmeticPrimary($this->expr1).')';
+ }
+}

0 comments on commit ee131dd

Please sign in to comment.
Something went wrong with that request. Please try again.