2014-02-16 4 views
0

사용자와 코스가 있습니다. 그들은 Subscription으로 명시된 HABTM 관계를가집니다 (user_id 및 course_id가있는 테이블입니다).HABTM 모델 연결이 이미 존재하는지 확인

사용자가 코스에 가입했는지 확인하는 코스 페이지에 조건이 있어야합니다. 어떻게해야할지 모르겠다.

나는 AppController가 설정이 $ 구독 순자산 나에게 유일한 가입 과정의 메뉴를 제공하기 위해이 :

$this->set('subscriptions', ClassRegistry::init('Subscription')->find('all', 
    array(
     'fields' => array('Course.id', 'Course.name'), 
     'conditions' => array('Subscription.user_id =' => $this->Auth->user('id')), 
     'recursive' => 1 
    ))); 

내 질문 : 어떻게 구독이 이미 존재하는지 확인합니까? 기본적으로 로그인 한 사용자와 동일한 user_id를 가진 구독이 있고, 현재있는 코스와 동일한 course_id가 있는지 찾아야합니다.

고마워요!

+1

프레임 워크에 대해 질문 할 때 항상 사용중인 버전을 포함시키는 것이 좋습니다. – Dave

답변

1

이런 일에 대해

$exists = (bool) $this->Subscription->field('count', array(
    'conditions' => array(
     'user_id' => $this->Auth->user('id'), 
     'course_id' => $courseId 
    ) 
)); 

사이드 노트? : 방법 :recursive를 사용하지 않는합니다. AppModel에서 public $recursive = -1;으로 설정 한 다음 다시 설정하지 마십시오. "추가"데이터를 포함 시키려면 Cake's Containable Behavior을 사용하십시오. 일관성이 있으며 추측하는 대신 끌어 오기 원하는 데이터를 정확하게 지정할 수 있습니다 (장기적으로 문제가 발생할 수 있음).

+1

@ AD7six - 동의합니다 - 좋은 점/좋은 코드! 일치하도록 변경했습니다. – Dave

+0

안녕 데이브 - 응답 해 주셔서 감사합니다. 그냥 이것을보고 내일 일할 수있게 해줄 것입니다. 감사! – itamar