次の簡単なクエリがあります。
$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);