我一直无法找到解决此问题的解决方案。我正在尝试在我的数据库中查询用户所属的组列表。用户可以在多个组中,组可以有多个用户。
我有“users”、“groups”和“groups_users”表。每个都有一个“id”字段,“groups_users”表还有另外两个字段,“group_id”和“user_id”。
我认为所有表格都正确形成。
我的 User.php 和 Group.php 模型文件看起来像这样
//app/Model/User.php
class User extends AppModel {
public $recursive = 1;
public @hasAndBelongsToMany = array(
'Group' => array(
'className' => 'Group',
'joinTable' => 'groups_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'group_id'
)
);
}
//app/Model/Group.php
class Group extends AppModel {
public $recursive = 1;
public @hasAndBelongsToMany = array(
'User' => array(
'className' => 'User',
'joinTable' => 'groups_users',
'foreignKey' => 'group_id',
'associationForeignKey' => 'user_id'
)
);
}
然后,在我的控制器文件中,我有这个
//app/Controller/ProjectController.php
class ProjectController extends AppController {
public $uses = array('Groups', 'Users');
...
$this->set('groupsForUser', $this->Groups->find('all', array(
'conditions' => array('Users.UserName' => 'testuser1')
));
}
每次我尝试显示数据时,都会收到错误消息 Error: ..... Unknown column 'Users.UserName' in 'where Clause'
它向我展示了它试图运行的 SQL:
SELECT Groups
。id
, ... 从accounts
. 在groups
哪里。='testuser1'Groups
Users
UserName
显然,表之间的关联没有正确发生,并且它发送的 SQL 查询没有正确连接,但我不知道这里出了什么问题。我尝试过像这样的品种
.....$this->Groups->Users->find(....
诸如此类的东西,但似乎没有任何效果。
帮助!