我正在尝试获取最新预订的课程(独特)。我在Doctrine querybuilder中尝试了以下内容:
$repository = $this->getDoctrine()->getRepository('AppBundle:Booking');
$query = $repository->createQueryBuilder('b')
->select('(b.course) AS course')
->orderBy('b.id', 'DESC')
->groupBy('b.course')
->setMaxResults(5)
->getQuery();
没有orderby它可以工作,但它会遍历预订的提升。我需要最新预订的课程。使用此查询,我收到此错误:
SQLSTATE [42000]:语法错误或访问冲突:1055表达式#1 ORDER BY子句不在GROUP BY子句中并包含 nonaggregated column ...不是 功能上依赖于GROUP BY子句中的列;这是 与sql_mode = only_full_group_by 500内部服务器不兼容 错误 - DriverException
我也尝试了以下内容:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT DISTINCT c.id
FROM AppBundle:Booking b
JOIN b.course c
ORDER BY b.id DESC'
);
SQLSTATE [HY000]:常规错误:3065 ORDER BY子句的表达式#1 不在SELECT列表中,引用列...不在SELECT中 列表;这与DISTINCT
不兼容
现在我已经搜索了解决方案,并且基本上找到了许多禁用ONLY_FULL_GROUP_BY的建议。 Disable ONLY_FULL_GROUP_BY
有些评论指出,为了遵守sql标准,这样做是不明智的。那怎么可能以一种有效的方式实现呢?
答案 0 :(得分:1)
您可以尝试这种方式:
wkhtmltopdf --footer-center [page]/[topage] www.google.com /tmp/foobar.pdf
您只会获得每门课程ID最高的预订,因此无需按课程分组。