2

我有以下简单的查询:

$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);
4

0 回答 0