Doctrine Query Builder子串

时间:2017-07-12 12:48:50

标签: php symfony doctrine-orm orm query-builder

嗨,我得到了以下内容:

$query = $qb->select($qb->expr()->substring("p.website",1,$qb->expr()->length("p.website")-4))
        ->from("AppBundle\Entity\Image" ,"p")
        ->getQuery();

并得到以下例外:

Notice: Object of class Doctrine\ORM\Query\Expr\Func could not be converted to int

我理解为什么抛出这个异常,但是如何使用Query Builder获取基于字符串大小的子字符串?

2 个答案:

答案 0 :(得分:1)

好的,明白了...... 表达式$qb->expr()->length("p.website")首先转换为LENGTH("p.website") 所以-4必须以字符串形式连接。

$qb->expr()->length("p.website") **.'-4'**

$query = $qb->select($qb->expr()->substring("p.website",1,$qb->expr()->length("p.website").'-4))
    ->from("AppBundle\Entity\Image" ,"p")
    ->getQuery();

答案 1 :(得分:0)

EntityRepository

public function getAll()
{
    $qb = $this->createQueryBuilder('p');
    $query = $qb
            ->select($qb->expr()->substring("p.website", 1, $qb->expr()->length("p.website").'-4'))
            ->getQuery();
    return $query->getResult();
}