ExtractValue в TYPO3

Я хочу обновить свой сайт с использованием доктрины 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))

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

0

Решение

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

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

Другие решения

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

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

Вы можете использовать простую строку в условии:

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

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

    ->where(
$queryBuilder->expr()->andX(
'FROM_UNIXTIME(tstamp) = ' . $queryBuilder->quote('2018-12-13 20:34:19'),
$queryBuilder->expr()->eq('uid', 6)
)
)
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector