Выяснение, существует ли уже ассоциация модели HABTM
У меня есть пользователи и курсы. У них есть отношение HABTM, которое проявляется в виде подписок (это таблица с user_id и course_id).
Мне нужно иметь условие на странице курса, которое проверяет, подписан ли пользователь на этот курс. Я не уверен, как это сделать.
У меня есть эти $ подписки, установленные в AppController, чтобы дать мне меню только подписанных курсов в nav:
$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 ответ
Как насчет этого?
$exists = (bool) $this->Subscription->field('count', array(
'conditions' => array(
'user_id' => $this->Auth->user('id'),
'course_id' => $courseId
)
));
Примечание: не используйте recursive
, Установите это public $recursive = -1;
в вашей AppModel, а затем никогда не устанавливайте его снова. Если вы хотите включить "лишние" данные, используйте Containable Behavior Cake - он последовательный и позволяет вам указать именно те данные, которые вы хотите получить, а не просто угадывать (что вызовет проблемы в долгосрочной перспективе).