我有用户和课程。它们有一个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与我当前的课程相同。
谢谢!
答案 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 - 它是一致的,并且允许您准确指定要提取的数据而不仅仅是猜测(从长远来看会导致问题)。