我是Symfony和Doctrine 2的新手
我有一个 SQL 查询
SELECT DATE_FORMAT(DATE(history.played_at), '%m-%Y') AS 'date' ,
COUNT(DISTINCT(l.id)) AS 'value'
FROM listeners AS l LEFT JOIN history ON history.listener_id = l.id
WHERE history.played_at IS NOT NULL
GROUP BY YEAR(DATE(history.played_at)), WEEK(DATE(history.played_at))
我想使用Doctrine 2和QueryBuilder在我的symfony项目中使用它,但我找不到如何做到这一点
我目前有这个
$qb->select($qb->expr()->countDistinct('l.id'))
->from('AppBundle:Listener', 'l')
->leftJoin('AppBundle:History', 'h', 'l.id = h.listener')
->where($qb->expr()->isNotNull('h.played_at'));
但它根本不起作用,很多东西都丢失
了如果有人能清楚地告诉我如何做,那就太好
我不是SQL专家,但这个查询应该有效:
$qb = $this->em->createQueryBuilder()
->select('COUNT(DISTINCT l.id)')
->from('AppBundle:Listener', 'l')
->leftJoin('AppBundle:History', 'h')
->where('h.playet_at IS NOT null');
如果您想更进一步,我建议您查看 原则查询生成器文档http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html
希望这有帮助
编辑:WEEKS在教义中不是原生的,但你可以用它来 https://github.com/beberlei/DoctrineExtensions