2017-03-02 1 views
0

저는 Symfony로 포럼을 만들고 있습니다. 현재 Doctrine을 사용하여 최신 활동을 어떻게 나열 할까하고 궁금합니다.Doctrine은 2 개의 다른 엔티티로 정렬합니다.

토픽 & 포스트 사이에 OneToMany 관계가 있습니다.

내가 최근에 일어난 일에 대해 확인해야 할 것입니다. 주제에 대한 게시물 일 수도 있고 주제 자체 일 수도 있습니다.

당신은 어떻게 이것을 가능한 한 깨끗하게합니까?

아마 UNION 어떻게 든 종류의 날짜를 기준으로 모두 지난 5

가 사전에 감사 선택할 것!

+0

정확히 표시 하시겠습니까? 마지막 게시물이있는 카테고리의 카테고리 또는 주제 목록과 포럼 요약은 무엇입니까? 왜 마지막 5? 몇 가지 질문에 답한 후에 해결책을 드릴 수 있습니다. 고마워요 –

+0

안녕 플로리안! 그럼 주제별 목록을 날짜별로 정렬하여 표시하고 싶습니다. (가장 새로운 것부터), 누군가가 토픽에 대해 (포스트)를 응답하면 대신에 날짜를 사용하여 정렬해야합니다. 그게 말이된다면. 나는 단지 5 개만 말하기 때문에 지금 나는 frontpage를위한 widget을 만들고있다. 나중에 실제로 다른 페이지에 전체 목록이 필요할 것입니다.하지만 그것은 내가 추측하는 바뀌는 것입니다. 감사! t 채 forum_topic FROM latestPost \t 같은 –

+0

't.id SELECT, t.title, MAX (p.createdOn)는 latestPost DESC 의해 t.id 순서 p.topic_id = ON t.id 기 P로 forum_post JOIN '는 MySQL에서 이와 유사하지만 Doctrine 솔루션을 원합니다 :). –

답변

0

당신은 (그것은 저장소 게시물의 함수의) 이런 식으로 뭔가를 시도 할 수 있습니다 :

public function lastTopics(){ 
    // Build query 
    $qb = $this 
     ->createQueryBuilder('p') 
     ->select('p') 
     ->leftJoin('p.topic', 't') 
     ->addSelect('t') 
     ->addGroupBy('p.id') 
     ->addGroupBy('t.id') 
     ->orderBy('p.dateCreation', 'DESC') 
     ->setMaxResults(5) 
    ; 

    // Get query 
    $query = $qb->getQuery(); 

    // Return results 
    return $query->getResult(); 
} 

은 그럼 그냥보기 주제로 지난 5 개 게시물을 나열합니다. Enjoy;)

+0

제안 해 주셔서 감사합니다! 그러나 이것은 주제가 아닌 게시물을 조사하지 않겠습니까? 게시물이없는 새 주제가 있으면 지금 표시되지 않기 때문입니다. 하지만 주제에 게시물이 있으면 마지막 질문을 검색하고 게시 한 사람에 대한 정보를 얻습니다. –

+0

항상 메시지 (주제 작성자의 메시지)가 있기 때문에 첫 번째 주제가 표시됩니다. 그냥 주제를 선택하려면 addSelect ('p');)를 제거하십시오. 개선의 아이디어에서 주제 엔티티에 마지막 메시지의 날짜를 저장하면 쿼리가 최적화됩니다. –

+0

Florian에 감사드립니다. 아직 개발중인 상태이므로 마지막 메시지의 날짜를 바로 추가하겠습니다. 고맙습니다! –

관련 문제