2017-02-10 5 views
2

実行が容易ではないような単純な要求に悩まされています。
私はテーブルの最後の10件のレコードを取得したいので、私はこれをやっていた:Doctrineは、最も新しいレコードを最も古いレコードから最新のレコードにソートします。

$records = $this->getDoctrine() 
    ->getRepository('Bundle:Rec') 
    ->findBy(array(), array('created' => 'DESC'), 10) 
; 

問題は、レコードが降順にソートされるということです。
同じレコードを昇順で取得する最も効率的な方法は何ですか?

+0

あなたは単に '配列( '作成' を使用することはできませんが=> 'ASC') '? – Xymanek

+0

彼はDESC結果をソートしようとしています。 'array( 'created' => 'ASC')'動作しません。 –

+0

私の悪い、質問が正しく理解されていません – Xymanek

答えて

2

あなたはuasortであなたのレコードを並べ替えることができます。

私はこれまで、あなたの(削除)答え変更されている@Veve
$records = $this->getDoctrine() 
    ->getRepository('Bundle:Rec') 
    ->findBy(array(), array('created' => 'DESC'), 10) 
; 

uasort($records, function ($first, $second) { 
    return $first->getCreated() > $second->getCreated() ? 1 : -1; 
}); 
+0

私はちょうど試しました。メンバ関数matching()on –

+0

@JulienM私の編集を参照してください。 – Veve

+0

たぶん私は間違っていますが、$レコードは配列であり、getIterator()メソッドはありません。 –

0

$records = $this->getDoctrine() 
     ->getRepository('Bundle:Rec') 
     ->findBy(array(), array('created' => 'DESC'), 10) 
; 

$recCollection = new ArrayCollection($records); 
$iterator = $recCollection->getIterator(); 
$iterator->uasort(function ($first, $second) { 
    return $first->getCreated() > $second->getCreated() ? 1 : -1; 
}); 

$measurements = $iterator; 
関連する問題