我有用户和群组的HABTM。我想在组视图中显示 - 属于用户的所有组。或者换句话说 - 所有拥有用户的组。
我在MVC中纠缠不清,但我无法弄明白。这是我的两个模型: class课程扩展了AppModel
public $name = 'Course';
public $hasAndBelongsToMany = array('User' =>
array(
'unique' => false
)
);
和...
public $name = 'User';
public $hasAndBelongsToMany = array('Course' =>
array(
'unique' => true
)
);
数据库中的表名是courses_users
- 此表包含组ID和用户ID。
应该很简单,但我是CakePHP的新手,所以我会喜欢一些帮助。谢谢!
答案 0 :(得分:2)
CakePHP默认情况下递归设置为1,这意味着假设您没有更改递归设置,它会在您对用户调用find时自动获取所有关联的课程,假设您在执行查找时设置了HABTM关系。因此,您所要做的就是:
$this->User->find('first', array('conditions' => array('User.id' => $this->Auth->user('id'))));
在您的用户模型中,我认为这不是必需的,但我喜欢在HABTM关系中指定连接表等:
public $hasAndBelongsToMany = array('Course' =>
array(
'unique' => true,
'dependent' => false,
'joinTable' => 'courses_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'course_id',
)
);
请记住,在HABTM关系中,除了在设置关系时指定要用作joinTable的表之外,您还没有真正触及joinTable。 CakePHP将自动完成剩下的工作。