我有以下简单的查询:
$qb = $em->createQueryBuilder();
$qb
->select('o')
->from('LibraryBundle:Publication', 'o')
;
$qb
->join('o.translations', 't');
$qb
->orderBy('o.published_at', 'DESC')
->setMaxResults($count);
没有加入一切正常,但加入顺序不起作用,我得到了第一条记录,而不是最后一条。出版关系:
/**
* @ORM\OneToMany(
* targetEntity="PublicationTranslation",
* mappedBy="translatable",
* cascade={"persist"}
* )
*/
private $translations;
我做错了什么?
UPD:此 DQL 生成以下 SQL 查询,但如果我在 phpMyAdmin 中尝试此命令也是错误的:
SELECT
p0_.id AS id0,
/* a number of fields */
p1_.translatable_id AS translatable_id20
FROM publications p0_
INNER JOIN publication_translation p1_ ON p0_.id = p1_.translatable_id
ORDER BY p0_.published_at DESC LIMIT 3
UPD2:我用这段代码解决了我的问题,但我仍然不明白为什么排序published_at
不起作用:
$qb = $em->createQueryBuilder();
$qb
->from('ItopLibraryBundle:Publication', 'o')
;
$qb
->select('o, t')
->join('o.translations', 't');
$qb
->orderBy('o.id', 'DESC')
->groupBy('o.id')
->setMaxResults($count);