快速设置:User
hasAndBelongsToMany Course
courses_users
__________________________
id | user_id | course_id |
1 | 1 | 1 |
2 | 1 | 3 |
3 | 2 | 5 |
我需要使用Courses
User
的所有users.id = 1
我试过了:
$this->User->id = $this->Auth->user('id');
$courses = $this->User->Courses->find('all');
但上面的代码检索所有课程,而不是与用户的课程相关联
答案 0 :(得分:1)
由于您的关系非常紧密,您需要执行以下操作:
$this->User->read(null, $id);
or
$this->User->find('first', array('conditions'=>array('id'=>1)));
它还应返回用户的课程。这取决于你的应用程序,但我会使用Containable行为来只检索课程,但实际上取决于你与用户模型的关系。
具有可包含的行为,您应该只加载类似的课程关系:
$this->User->find('first',
array(
'conditions'=>array('id'=>1),
'contain'=>array('Courses')));
答案 1 :(得分:0)
$course_ids = $this->CoursesUser->find('list', array('conditions'=>array('user_id'=>$this->Auth->user('id')), 'fields'=>'course_id'));
$courses = $this->Course->find('all', array('conditions'=>array('id'=>$course_ids)));