PageRenderTime 103ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Query/Sqlite/StrfTime.php

https://github.com/beberlei/DoctrineExtensions
PHP | 46 lines | 28 code | 9 blank | 9 comment | 0 complexity | 52ecc1db41286bb29fa1e896f8d186df MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. namespace DoctrineExtensions\Query\Sqlite;
  3. use Doctrine\ORM\Query\AST\Functions\FunctionNode;
  4. use Doctrine\ORM\Query\Lexer;
  5. use Doctrine\ORM\Query\Parser;
  6. use Doctrine\ORM\Query\SqlWalker;
  7. /**
  8. * @author Tarjei Huse <tarjei.huse@gmail.com>
  9. */
  10. class StrfTime extends FunctionNode
  11. {
  12. public $date;
  13. public $formatter;
  14. /**
  15. * @param SqlWalker $sqlWalker
  16. *
  17. * @throws \Doctrine\ORM\Query\QueryException
  18. * @return string
  19. */
  20. public function getSql(SqlWalker $sqlWalker)
  21. {
  22. return 'strftime('
  23. . $sqlWalker->walkLiteral($this->formatter)
  24. . ', '
  25. . $sqlWalker->walkArithmeticPrimary($this->date)
  26. . ')';
  27. }
  28. public function parse(Parser $parser)
  29. {
  30. $parser->match(Lexer::T_IDENTIFIER);
  31. $parser->match(Lexer::T_OPEN_PARENTHESIS);
  32. $this->formatter = $parser->Literal();
  33. $parser->match(Lexer::T_COMMA);
  34. $this->date = $parser->ArithmeticPrimary();
  35. $parser->match(Lexer::T_CLOSE_PARENTHESIS);
  36. }
  37. }