2010-11-27 3 views
3
에서 관련 모델에서 특정 필드

I가 다음과 같은 관계 :선택 CakePHP의

  • User hasMany의 UserNotification
  • Notification hasMany의 UserNotification
  • UserNotification belongsTo를 User, Notification

  • notifications 테이블이있다 다음 열 :, subject, content

  • users_notifications 테이블에는 다음과 같은 열이 있습니다 id, user_id, notification_idUsersController에서 status

, 어떻게 한 사용자에서 모든 알림을 검색 할 수 있습니다? 즉, 각 통지마다 이러한 모든 세부 정보 (주체, 내용 및 상태)를 의미합니다.

또한 반환 할 필드 수를 어떻게 제한합니까? UsersController에서 요청할 때 find() 배열의 User 모델에서 필드를 검색하지 않으려합니다.

감사합니다. UsersController에서 알림을 검색하기 위해

답변

3

, 단순히 이렇게 :

$notifications = $this->User->Notification->find('all'); 

기본적으로, 당신은 알림 모델에 액세스 할 연결을 사용할 수 있습니다.

다음으로 필드를 제한하기 위해 두 가지 방법으로 접근 할 수 있습니다. 먼저 $ recursive 속성을 -1로 설정합니다.

응용 프로그램에서 어디서나 알림을 표시하려면 알림 모델에서이 줄을 사용하십시오. 모든 모델에 대해 AppModel에서 사용하고 싶다면 AppModel에서 사용하십시오.

var $recursive = -1; 

은 또한 상기 찾기() 문 앞에 다음 줄을 배치 할 수 있습니다 :

$this->User->Notification->recursive = -1; 

두 번째 방법은 Containable 동작을 사용하는 것입니다.

장소 (글로벌 효과 또는 AppModel이) 다음 사용자의 알림 모델 라인 :

var $actsAs = array('Containable'); 

지금, 기본적으로는 사용자 모델을 당겨하지 않을 것입니다. 만약 당신이 원한다면 그러나이 알림 데이터와 함께 당겨 수, 다음 쿼리는 다음과 같아야합니다

$notifications = $this->User->Notification->find('all', array(
    'contain' => array('User') 
); 

희망이 도움이!

+0

있습니다. 고맙습니다! – linkyndy