2011-08-09 5 views
0

그래서 다양한 모델 유형이 있습니다. 의견, 게시물, 리뷰 등. 그리고 나는 그것들을 하나의 통합 된 피드에 결합시키고 싶습니다. 이 모든 데이터를 병합하여 타임 스탬프별로 정렬 된 CakePHP 스타일이 있습니까?CakePHP 철학적 질문

이 작업을 수행하는 데 지저분한 방법이 있지만 내가 누락 된 표준 방법이 있는지 궁금합니다. 감사!

답변

2

항목이 다른 테이블에 있기 때문에 어떤 경우에도 항목을 데이터베이스에서 함께 정렬하기가 어렵습니다. 얼마나 잘 조직 된 데이터에 따라, 마치 뭔가 비 혼란이해야 할 같이

$posts = $this->Post->find(...); 
$reviews = $this->Review->find(...); 
$comments = $this->Comment->find(...); 

$feed = array_merge($posts, $reviews, $comments); 
usort($feed, function ($a, $b) { 
    $a = current($a); 
    $b = current($b); 
    return $strtotime($a['created']) - strtotime($b['created']); 
}); 
0

철학적? lol

아니요, 그렇다고 생각하지 않습니다. app_model에 afterSave()를 작성할 수는 있지만. 찾으려는 데이터를 확인하고 발견되면 캐시에 저장하십시오. 아마도 지저분 할 것입니다.하지만 적어도 한 곳에서 이루어 지므로 성능에 많은 영향을 미치지 않습니다.

0

가 자동으로 데이터를 병합하는 방법은 확실히 없다, 대신 각 관계에 대해 별도의 쿼리를 발사, 당신이 잡아 수 한 번에 CakePHP의 Containable 동작을 사용합니다.