typo3中的extractvalue

bihw5rsg  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(437)

我想更新我的网站与使用类型3的原则。但是在我的命令where中,我想使用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或表达式来做这个吗?谢谢

arknldoa

arknldoa1#

把它做成一根绳子怎么样?

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

vd8tlhqk2#

可以在where条件下使用普通字符串:

->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)
            )
        )
gopyfrb3

gopyfrb33#

这是我们的工作:

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

相关问题