2017-02-10 1 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으로 레코드를 정렬 할 수 있습니다

$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() –

+0

@JulienM 내 편집을 참조하십시오. – Veve

+0

어쩌면 내가 잘못하고 있지만 $ 레코드가 배열인데, getIterator() 메소드가 없다. –

0

@Veve을 나는이에 (삭제) 대답을 변경 :

$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; 
관련 문제