2014-02-16 29 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