2014-02-16 30 views
0

我有用戶和課程。他們有一個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

相關問題