查找HABTM模型关联是否已存在

时间:2014-02-16 20:08:26

标签: php cakephp has-and-belongs-to-many cakephp-model

我有用户和课程。它们有一个HABTM关系,表现为Subscriptions(这是带有user_id和course_id的表)。

我需要在“课程”页面上有一个条件,检查用户是否订阅了该课程。我不知道该怎么做。

我在AppController中设置了这个$ subscriptions,以便为我提供导航中仅订阅课程的菜单:

$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 个答案:

答案 0 :(得分: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 - 它是一致的,并且允许您准确指定要提取的数据而不仅仅是猜测(从长远来看会导致问题)。