Symfony 2/Doctrine在where和groupBy中使用LENGTH?

tktrz96b  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一张table:logCall

id          name        out_number         in_number       duration
1         nameTest1       302               400              60
2         nameTest2       3232211           400              12
3         nameTest3       303               401              20
3         nameTest3       302               32323            10
4         nameTest4       111               302              10

这是我处理的代码的一部分:

$q = $this->_em->getConnection()->createQueryBuilder();
    $q->select("name, out_number in_number, duration")
        ->from(MAUTIC_TABLE_PREFIX . 'logCall')
        ->where("LENGTH(in_number) = 3")
        ->andWhere("LENGTH(out_number) = 3")
        ->orderBy('id', 'DESC');
    $result = $q->execute()->fetchAll();
    return $result;

现在我想要:
1.获取值out_number和值length == 3in_number(我上面处理的代码在where("LENGTH(in_number) = 3")中有一个错误),所以它不能被检索。
1.如果我想通过out_numberin_number进行groupBy,是否可以使用相同的查询,或者我必须单独使用另一个查询。例如,我想使用代码302的groupBy out_number。它计算的total duration等于70。类似地,in_number = 302具有total duration = 10
请给我给予反馈,这样我就可以解决这个问题。
我上面的代码是不完整的,可能不是语法正确的。请帮助我。我是新的PHP。我从JS切换。谢谢大家。

t1qtbnec

t1qtbnec1#

你必须使用querybuilder中的expr

$qb = $this->_em->getConnection()->createQueryBuilder();
$qb->select("name, out_number in_number, duration")
    ->from(MAUTIC_TABLE_PREFIX . 'logCall')
    ->where(
        $qb->expr()->eq($qb->expr()->length('in_number'), 3)
    )
    ->andWhere(
        $qb->expr()->eq($qb->expr()->length('out_number'), 3)
    )
    ->orderBy('id', 'DESC');

$result = $qb->execute()->fetchAll();
return $result;

我还没在真实的环境中测试过,但应该可以.
更多信息here

相关问题