ORM中的substring_index函数

赫尔尼克

我必须SUBSTRING_INDEX在symfony 2的ORM中使用函数。我该怎么做?现在在查询中使用它给了我未定义的函数错误:

[Syntax Error] line 0, col 299: Error: Expected known function, got 'SUBSTRING_INDEX'

我使用此函数从中获取第一个数字,例如:

11.48.205.1

我该如何解决?

Stepashka

这是代表SUBSTRING_INDEX函数的类(不要忘记更新名称空间)。

<?php

namespace Sad\Functions;

use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;

/**
 * "SUBSTRING_INDEX" "(" ArithmeticPrimary "," ArithmeticPrimary "," ArithmeticPrimary ")"
 *
 * @author  Andrey Stepanov <[email protected]>
 */
class SubstringIndexFunction extends FunctionNode
{
    public $str = null;
    public $delim = null;
    public $count = null;

    /**
     * @override
     */
    public function getSql(SqlWalker $sqlWalker)
    {
        return 'SUBSTRING_INDEX(' .
            $this->str->dispatch($sqlWalker) . ', ' .
            $this->delim->dispatch($sqlWalker) . ', ' .
            $this->count->dispatch($sqlWalker) .
        ')';
    }

    /**
     * @override
     */
    public function parse(Parser $parser)
    {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
        $this->str = $parser->ArithmeticPrimary();
        $parser->match(Lexer::T_COMMA);
        $this->delim = $parser->ArithmeticPrimary();
        $parser->match(Lexer::T_COMMA);
        $this->count = $parser->ArithmeticPrimary();
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
    }
}

您需要先注册它,然后再创建实体管理器:

$config->addCustomStringFunction('SUBSTRING_INDEX', 'Sad\Functions\SubstringIndexFunction');
/* ... */
$entityManager = EntityManager::create($conn, $config);

完成后,您将获得以下结果:

echo $entityManager->createQuery("SELECT p FROM \Sad\Schema\AbstractPageAny as p WHERE SUBSTRING_INDEX(p.name,'a',1) = 'P'")->getSQL();
// Output: SELECT p0_.id AS id_0, p0_.name AS name_1, p0_.type AS type_2 FROM page p0_ WHERE (SUBSTRING_INDEX(p0_.name, 'a', 1) = 'P')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PGSQL中模拟MySQL的substring_index()

来自分类Dev

替换mysql中的substring_index

来自分类Dev

SQL Server相当于MySQL中的substring_index函数

来自分类Dev

SQL Server相当于MySQL中的substring_index函数

来自分类Dev

MySQL在substring_index中的多种处理模式

来自分类Dev

在MySQL中使用substring_index

来自分类Dev

在列上运行SUBSTRING_INDEX查询

来自分类Dev

MYSQL将1添加到substring_index中的最大值

来自分类Dev

如何在 substring_index 中传递多个分隔符

来自分类Dev

如何在使用substring_index时摆脱换行空间

来自分类Dev

SUBSTRING_INDEX,带有多个定界符

来自分类Dev

MySQL SUBSTRING_INDEX与sqlite集成-PHP PDO

来自分类Dev

在MySQL的where子句中使用substring_index

来自分类Dev

Mysql SUBSTRING_INDEX如何不使用序列扫描

来自分类Dev

SUBSTRING_INDEX,带有多个定界符

来自分类Dev

MySQL:如何选择表的某些行并执行SUBSTRING_INDEX

来自分类Dev

如果未找到分隔符,则Mysql中的Substring_index应返回空白字符串

来自分类Dev

需要使用临时变量来使SUBSTRING_INDEX的REPLACE工作

来自分类Dev

是否可以使用Ruby Sequel实现SUBSTRING_INDEX逻辑以创建列别名?

来自分类Dev

如何在codeigniter中使用mysql substring_index计算JSON格式数据的总和

来自分类Dev

锂ORM中多列的SUM函数

来自分类Dev

t.substring不是ApexCharts中的函数

来自分类Dev

Excel 中的 INDEX MATCH 函数

来自分类Dev

getPaginationCount()函数在Laravel的雄辩ORM中不起作用

来自分类Dev

lua and_index函数中的元表

来自分类Dev

从 Excel 中的 INDEX 函数返回数组?

来自分类Dev

雄辩的ORM:如何从每个函数内的集合中删除特定项目?

来自分类Dev

预期的已知函数,在.... Doctrine \ ORM \ Query \ Parser.php中找不到'... TimeDiffFunction

来自分类Dev

使用Laravel的Eloquent ORM在Slim中的空错误上调用成员函数connection()

Related 相关文章

  1. 1

    在PGSQL中模拟MySQL的substring_index()

  2. 2

    替换mysql中的substring_index

  3. 3

    SQL Server相当于MySQL中的substring_index函数

  4. 4

    SQL Server相当于MySQL中的substring_index函数

  5. 5

    MySQL在substring_index中的多种处理模式

  6. 6

    在MySQL中使用substring_index

  7. 7

    在列上运行SUBSTRING_INDEX查询

  8. 8

    MYSQL将1添加到substring_index中的最大值

  9. 9

    如何在 substring_index 中传递多个分隔符

  10. 10

    如何在使用substring_index时摆脱换行空间

  11. 11

    SUBSTRING_INDEX,带有多个定界符

  12. 12

    MySQL SUBSTRING_INDEX与sqlite集成-PHP PDO

  13. 13

    在MySQL的where子句中使用substring_index

  14. 14

    Mysql SUBSTRING_INDEX如何不使用序列扫描

  15. 15

    SUBSTRING_INDEX,带有多个定界符

  16. 16

    MySQL:如何选择表的某些行并执行SUBSTRING_INDEX

  17. 17

    如果未找到分隔符,则Mysql中的Substring_index应返回空白字符串

  18. 18

    需要使用临时变量来使SUBSTRING_INDEX的REPLACE工作

  19. 19

    是否可以使用Ruby Sequel实现SUBSTRING_INDEX逻辑以创建列别名?

  20. 20

    如何在codeigniter中使用mysql substring_index计算JSON格式数据的总和

  21. 21

    锂ORM中多列的SUM函数

  22. 22

    t.substring不是ApexCharts中的函数

  23. 23

    Excel 中的 INDEX MATCH 函数

  24. 24

    getPaginationCount()函数在Laravel的雄辩ORM中不起作用

  25. 25

    lua and_index函数中的元表

  26. 26

    从 Excel 中的 INDEX 函数返回数组?

  27. 27

    雄辩的ORM:如何从每个函数内的集合中删除特定项目?

  28. 28

    预期的已知函数,在.... Doctrine \ ORM \ Query \ Parser.php中找不到'... TimeDiffFunction

  29. 29

    使用Laravel的Eloquent ORM在Slim中的空错误上调用成员函数connection()

热门标签

归档