Как использовать функцию Mysql Date в доктрине dql zend framework [duplicate]

Модификатор Java volatile является примером специального механизма, гарантирующего связь между потоками. Когда один поток записывает в изменчивую переменную, а другой поток видит, что пишет, первый поток сообщает второй обо всем содержимом памяти до тех пор, пока он не выполнит запись в эту изменчивую переменную.

Атомные операции выполняются в одной единице задачи без помех от других операций. Атомные операции необходимы в многопоточной среде, чтобы избежать несогласованности данных.

13
задан j0k 7 November 2012 в 17:29
поделиться

1 ответ

Вы можете добиться того, чего хотите, используя пользовательскую функцию :

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

class DateFunction extends FunctionNode
{
    private $arg;

    public function getSql(SqlWalker $sqlWalker)
    {
        return sprintf('DATE(%s)', $this->arg->dispatch($sqlWalker));
    }

    public function parse(Parser $parser)
    {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);

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

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

Затем зарегистрируйте эту функцию в своем коде:

$em->getConfiguration()->addCustomDatetimeFunction('DATE', 'DateFunction');

И ваш DQL-запрос будет работать!

31
ответ дан Benjamin 31 August 2018 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: