ExtractValue в TYPO3 - PullRequest
       3

ExtractValue в TYPO3

0 голосов
/ 18 декабря 2018

Я хочу обновить свой сайт, используя доктрину TYPO3.Но в моей команде, где я хочу использовать ExtractValue, и доктрина понимает эти параметры как поле, а не как функцию sql.

Это мой код:

$statement = $queryBuilder
   ->addSelectLiteral(
   )
   ...

   ->where(
        $queryBuilder->expr()->eq('ExtractValue(n.flexform, \'//field[@index="erasmusStatus"]/value[@index="vDEF"]\')', 1);
   )

И результат в SQL:

... WHERE (`'ExtractValue(n`.`flexform, \'//field[@index=\"erasmus\"]/value[@index=\"vDEF\"]\')'` = 1)) 

Вы можете видеть, что SQL принимает 'ExtractValue (n' как поле.

Но я хочу:

...WHERE ('ExtractValue(`n`.`flexform`, \'//field[@index=\"erasmus\"]/value[@index=\"vDEF\"]\')' = 1)) 

DoВы знаете QueryBuilder или выражение для этого? Спасибо

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Это работа с этим:

... 
->where(
    str_replace('`',"'", $queryBuilder->expr()->eq(1, 'ExtractValue(`n.flexform`,//field[@index="erasmusStatus"]/value[@index="vDEF"]\')');
)
0 голосов
/ 22 декабря 2018

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

->where(
     'ExtractValue(n.flexform, \'//field[@index="erasmusStatus"]/value[@index="vDEF"]\') = 1'
   )

Это возможно в других методах, например andX:

    ->where(
        $queryBuilder->expr()->andX(
            'FROM_UNIXTIME(tstamp) = ' . $queryBuilder->quote('2018-12-13 20:34:19'),
            $queryBuilder->expr()->eq('uid', 6)
            )
        )
0 голосов
/ 19 декабря 2018

как насчет того, чтобы сделать его строкой?

... 
->where(
    $queryBuilder->expr()
                 ->eq('ExtractValue(`n.flexform`,
                                    //field[@index="erasmusStatus"]/value[@index="vDEF"]\')', 
                                    1);
                     )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...