2012-04-13 8 views
2

다음과 같이 내가 CakePHP는 2.0을 내 모델 관계를 사용하고 있습니다 :CakePHP의 Countercache - 논리 문제

사용자가 많은 포스트

포스트

포스트는 많은처럼을 가지고 많은 의견을 가지고있다

댓글 마찬가지로 내가 열 "like_count"를 추가

테이블을 좋아하는 countercache을 내가 열 "like_count"를 추가 코멘트 테이블에서 countercache 및 을 활성화하고 활성화 후 테이블에서

많은 포함하고있다 :

ID, post_id를, comment_idu는

을 USER_ID와 모델은 다음과 같이

public $belongsTo = array(
    'Post' => array(
     'className' => 'Post', 
     'foreignKey' => 'post_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'counterCache' => true 
    ), 
    'Comment' => array(
     'className' => 'Comment', 
     'foreignKey' => 'comment_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'counterCache' => true 
    )) 

잘 작동 그것 ..

를하지만 지금 내가 계산처럼 총을 수행해야합니다 (계수와 같은 포스트 + 수가 같은 코멘트) 각 사용자에 대해. 그래서 사용자 테이블에 필드를 추가하고 카운터 캐쉬를 활성화하기 위해 카운터 캐치를 사용할 수 있습니다. 그러나 완전히 열세가 될 것입니다. 이름은 사용자 테이블에 추가해야하고 어디에서 카운터 캐시를 넣어야합니까 => 참. 더 이상 갈 방법이 없습니다 ...

답변

1

$ belongsTo 배열에 다음을 추가하십시오.

'User' => array(
     'className' => 'User', 
     'foreignKey' => 'user_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'counterCache' => true 
    ), 

그리고 당신은 users 테이블에 like_count 열을 추가합니다.


와의

당신의 UserModel은 물론 좋아하는에 대한 hasMany의를 추가해야합니다.

+0

잘 작동합니다. – AnNaMaLaI

+0

도움이 된 것을 기쁘게 생각합니다! – Joep