Doctrine2的查询生成器子字符串帮助程序方法的正确语法

问题描述:

好的,这个问题可能是由于我对查询生成器帮助程序方法的模糊理解,但对于我的生活,我无法找到使用子字符串方法的正确方法。Doctrine2的查询生成器子字符串帮助程序方法的正确语法

我试图返回以指定字母数字值开头的所有结果。下面的代码不会抛出任何错误,但它也不会返回任何结果。我搜索谷歌,但显然几乎没有什么显示如何使用子字符串。我想在查询生成器中得到这个工作,但我可能不得不去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状态:

对于所有形式的SUBSTRING(),则第一个字符的 从中子是要被提取被算作 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 

您可以从这些例子中,他们也都使用基于一见(甲骨文,但是,将给予0时承担1)。

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

+0

Jeez这样一个简单的解决方案。万分感谢! – Vertex 2011-12-23 19:21:34

+0

你非常欢迎。 – webbiedave 2011-12-23 19:27:21