symfony - Symfony 中的 Postgres date_trunc(text, timestamp) 与 Doctrine 2 ?

标签 symfony doctrine-orm doctrine-orm-postgres

如何使用 Postgres date_trunc(text, timestamp) Symfony 中的 Doctrine 2 功能如何?

最佳答案

  1. 在您的项目中,创建一个名为DoctrineExtensions的新文件夹
  2. 在新文件夹中,创建一个名为 DateTrunc.php 的文件
  3. 粘贴此代码:

DateTrunc.php

<?php
namespace YOUR_BUNDLE_HERE\DoctrineExtensions;

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

/**
 * DateTrunc ::= "date_trunc" "(" ArithmeticPrimary "," ArithmeticPrimary ")"
 */
class DateTrunc extends FunctionNode
{
  // (1)
  public $firstDateExpression = null;
  public $secondDateExpression = null;

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

  public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker){
    return 'date_trunc(' .
        $this->firstDateExpression->dispatch($sqlWalker) . ', ' .
        $this->secondDateExpression->dispatch($sqlWalker) .
    ')'; // (7)
  }
}
  • 将函数添加到 Doctrine 配置
  • config.yml

    orm:
        dql:
            datetime_functions:
                 date_trunc: YOUR_BUNDLE_HERE\DoctrineExtensions\DateTrunc
    

    5.您现在可以使用date_trunc(text, timestamp)与教义!

    注意:您可以轻松地为每个附加的 Postgres/MySQL 函数调整此代码。结账DoctrineExtensions

    关于symfony - Symfony 中的 Postgres date_trunc(text, timestamp) 与 Doctrine 2 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30628393/

    相关文章:

    Symfony2。使用数据 fixture 填充多对多连接表

    orm - fetch ="EAGER"和 fetch ="LAZY"在学说上有什么区别

    php - 转义文字,使其用双引号引起来

    postgresql - 使用 doctrine2 postgresql 的模式更新总是 DROPs 然后 ADDs CONSTRAINTs

    css - Twig 错误 : Unknown tag name "stylesheets"

    PHP fatal error : momory size exhausted when using composer to install user-bundle

    php - Doctrine 2 命令行打印 Cygwin 配置

    postgresql - 使用 Doctrine2 和 Postgresql 的简单 DQL 请求

    Symfony 验证 : range between two numbers, 或一个值

    php - Symfony2 : How do I use in a form (query builder) left join and isnull?