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