Thank you for your reply @Marco, please find all details below:

My expected SQL:

SELECT a.*
FROM my_table a
WHERE WEEK(DATE_SUB(a.createdAt, INTERVAL 1 WEEK)) = 
WEEK(DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK))

My Current DQL:

SELECT a.*
FROM MyBundle:MyEntity a
WHERE WEEK_NUMBER(DATE_SUB(a.createdAt, INTERVAL 1 WEEK)) = 
WEEK(DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK))


My custom DQL function `WEEK_NUMBER`:

```
class WeekNumber extends FunctionNode
{
    /**
     * @var AggregateExpression|
FunctionNode|InputParameter|string
     */
    public $dateTimeExpression = null;

    /**
     * {@inheritdoc}
     */
    public function parse(Parser $parser)
    {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);

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


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

    /**
     * {@inheritdoc}
     */
    public function getSql(SqlWalker $sqlWalker)
    {
        return 'WEEK(' .
            $this->dateTimeExpression->dispatch($sqlWalker)
        . ')';
    }


Error Message:
Uncaught PHP Exception Doctrine\ORM\Query\QueryException: "[Syntax Error] 
line 0, col 134: Error: Expected '.' or '(', got 'DAY'" ..
I am nout sure, may be the `ArithmeticPrimary()` does not support `DATE_SUB` 
expression as argument to `WEEK_NUMBER`.

Thank you,

Le mardi 24 janvier 2017 00:34:12 UTC+1, Marco Pivetta a écrit :
>
> ` "[Syntax Error] line 0, col 134`
>
> Please provide:
>
>  * your DQL
>  * your expected SQL
>
> Also, I would strongly suggest to write an integration test relying on the 
> DQL parser ;-)
>
> Marco Pivetta 
>
> http://twitter.com/Ocramius      
>
> http://ocramius.github.com/
>
> On Mon, Jan 23, 2017 at 12:17 PM, Abir BRAHEM <[email protected] 
> <javascript:>> wrote:
>
>> Hello,
>>
>> I need to translate `WEEK(DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK))` to 
>> DQL:
>>
>> It looks like this for the moment: `WEEK_NUMBER(DATE_SUB(my_var , 7, DAY) 
>> `
>>
>> ```
>> class WeekNumber extends FunctionNode
>> {
>>     /**
>>      * @var AggregateExpression|FunctionNode|InputParameter|string
>>      */
>>     public $dateTimeExpression = null;
>>
>>     /**
>>      * {@inheritdoc}
>>      */
>>     public function parse(Parser $parser)
>>     {
>>         $parser->match(Lexer::T_IDENTIFIER);
>>         $parser->match(Lexer::T_OPEN_PARENTHESIS);
>>
>>         $this->dateTimeExpression = $parser->ArithmeticPrimary();
>>
>>
>>         $parser->match(Lexer::T_CLOSE_PARENTHESIS);
>>     }
>>
>>     /**
>>      * {@inheritdoc}
>>      */
>>     public function getSql(SqlWalker $sqlWalker)
>>     {
>>         return 'WEEK(' .
>>             $this->dateTimeExpression->dispatch($sqlWalker)
>>         . ')';
>>     }
>>
>>
>> => It generates me an error: Uncaught PHP Exception 
>> Doctrine\ORM\Query\QueryException: "[Syntax Error] line 0, col 134: Error: 
>> Expected '.' or '(', got 'DAY'" ..
>> Seems like `ArithmeticPrimary()` does'nt support `DATE_SUB` expression :S
>>
>> Any help please!
>>
>> Thanks,
>>
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "doctrine-user" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/doctrine-user.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to