symfony - Doctrine2 的查询构建器子字符串辅助方法的正确语法

标签 symfony doctrine-orm

好吧,这个问题可能是由于我对查询构建器辅助方法的模糊理解,但在我的生活中,我找不到使用 substring 方法的正确方法。

我试图返回以指定字母数字值开头的所有结果。下面的代码不会抛出任何错误,但也不会返回任何结果。我已经搜索过谷歌,但显然几乎没有任何内容显示如何使用子字符串。我想让它在查询构建器中工作,但我可能必须使用 DQL 或原始 sql。

    $qb->select('p', 't');
    $qb->from('ContentParent', 'p');
    $qb->join('p.titleCurrent', 't');
    $qb->where(
            $qb->expr()->eq($qb->expr()->substring('t.sortTitle', 0, 1), ':letter')
        );

谢谢!

最佳答案

SUBSTRING 需要基于一个。

MySQL manual状态:

For all forms of SUBSTRING(), the position of the first character in the string from which the substring is to be extracted is reckoned as 1.



Oracle :
SELECT SUBSTR('ABCDEFG',3,4) "Substring"
     FROM DUAL;

Substring
---------
CDEF

来自 Transact-SQL manual :
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Person
WHERE LastName like 'Barl%'
ORDER BY LastName

您可以从这些示例中看到,它们也使用基于一个的(然而,Oracle 将假定 1 当给定 0 时)。

只需更改您的 substring 't.sortTitle', 1, 1 的参数它会正常工作。

关于symfony - Doctrine2 的查询构建器子字符串辅助方法的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8619421/

相关文章:

php - session_start() : open(/var/lib/php5/sess_ibfocfkgbpfaoimac34nkjotp2, O_RDWR) 失败

php - Symfony2,表单,试图获取非对象的属性

php - 如何使用 Doctrine 2 查询 NOT NULL?

php - Symfony 2 - 试图从命名空间 "apcu_fetch"调用函数 "Doctrine\Common\Cache"

json - 发生错误时如何更改响应?

debugging - 如何禁用 Symfony 2 分析器栏?

php - 入门 Symfony 2 的最佳书籍、教程或博客是什么

php - 在doctrine中插入json不起作用

symfony - 注释 JMS\SecurityExtraBundle\JMS SecurityExtraBundle 不起作用?

php - 给定一个查询,我如何找到生成它的 ORM 方法?