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
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
,它将正常工作。
Jeez这样一个简单的解决方案。万分感谢! – Vertex 2011-12-23 19:21:34
你非常欢迎。 – webbiedave 2011-12-23 19:27:21