【问题标题】:Syntax Error - line 0, col 469: Error: Expected known function, got 'IF'语法错误 - 第 0 行,第 469 列:错误:预期的已知函数,得到 'IF'
【发布时间】:2019-01-24 07:02:18
【问题描述】:

您好,我正在使用学说查询生成器来执行查询..

这是我的查询......

return $this->createQueryBuilder('sp')
                        ->select('sp.id, sp.price, sp.offer_price AS offerPrice, sp.price_kg AS PriceKg, '
                                . 'sp.offer_price_kg AS offerPriceKg, sp.status AS status, s.name AS storename')
                        ->addSelect("(CASE WHEN (sp.name IS NULL) THEN p.name ELSE sp.name END) AS spname")
                        ->addSelect("(CASE WHEN (sp.sku IS NULL) THEN p.sku ELSE sp.sku END) AS spsku")
                        ->addSelect("(CASE WHEN (sp.main_image IS NULL) THEN p.main_image ELSE sp.main_image END) AS sp_main_image")
                        ->join('sp.store', 's')
                        ->join('sp.product', 'p')
                        ->Where('IF(sp.name IS NULL, p.name, sp.name) LIKE :val')
                        ->orWhere('sp.sku LIKE :val')
                        ->setParameter('val', '%' . $search . '%')
                        ->getQuery();

如果条件出错,看起来像这样,

->Where('IF(sp.name IS NULL, p.name, sp.name) LIKE :val')

这是我得到的错误,

[语法错误] line 0, col 469: Error: Expected known function, got '如果'

【问题讨论】:

  • “where”不要大写

标签: symfony doctrine-query


【解决方案1】:

反正你的语法很混乱,你为什么不这样做

->where('sp.name IS NULL AND p.name LIKE :val AND sp.name LIKE :val')

在任何情况下,Doctrine 都没有内置的“if”函数,所以如果你需要特定的东西,你需要自己编程。

https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/cookbook/dql-user-defined-functions.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-08
    • 2014-03-03
    • 2016-11-09
    • 2018-12-18
    • 2019-12-20
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多