这应该是非常简单的回答,我总是检查答案,并投票支持任何人。
我无法正确写字或查找文档。我使用createQueryBuilder并根据一些变量选择实体/记录。我想要做的是定位和限制查询中特定属性/字段的长度。实体相当大,所以我真的想要只是针对这个领域。我尝试在select语句中使用SUBSTRING(STR,START,END),但它似乎并没有起作用。选择的快速片段看起来像......
->select("p as post, SUBSTRING(p.body, 0, 30) as body")
我希望能够定位post.body,但发布不是类错误。 :/
答案 0 :(得分:1)
Here是你的答案。索引字符时,SUBSTRING
从1开始。遗憾的是,在Doctrine文档中没有提到这一点
如果将标量数据添加到选择中,Doctrine也不会将post
转换为实体。
您可以尝试将body
(或其他)属性映射为SUBSTRING(body, 1, 30)
,也可以修改属性getter。
/** @Entity */
class Post
{
//...
/** @Column(name="SUBSTRING(body, 1, 30)") */
private $bodyExcerpt;
/** @Column(name="body") */
private $body;
public function getBody($excerptOnly = true) {
if ($excerptOnly) {
return substr($this->body, 0, 30);
} else {
return $this->body;
}
}
}