使用CakePHP模型查询多个关联
我对CakePHP(从昨晚开始)非常陌生,我在查询方面遇到了问题 我的模型的工作方式如下: 类别组>用户>权限组 基本上,类组由大量用户组成,每个用户都属于一个权限组。该组定义用户的类型及其权限 现在,我需要进行一个查询,从中获取属于某个PermissionGroup的所有用户,但我是从ClassgroupsController进行查询的 但是,每当我尝试这样做时:使用CakePHP模型查询多个关联,php,cakephp,has-and-belongs-to-many,Php,Cakephp,Has And Belongs To Many,我对CakePHP(从昨晚开始)非常陌生,我在查询方面遇到了问题 我的模型的工作方式如下: 类别组>用户>权限组 基本上,类组由大量用户组成,每个用户都属于一个权限组。该组定义用户的类型及其权限 现在,我需要进行一个查询,从中获取属于某个PermissionGroup的所有用户,但我是从ClassgroupsController进行查询的 但是,每当我尝试这样做时: $this->Classgroup->User->find('list', array(
$this->Classgroup->User->find('list', array(
'fields' => array('User.surname_firstname'),
'order' => array(
'User.surname_firstname'
),
'conditions' => array(
'PermissionGroup.permissions' => '10'
)
)
我得到这个错误:
Column not found: 1054 Unknown column 'PermissionGroup.permissions' in 'where clause'
因为我在ClassgroupController中,似乎无法看到组字段,但我会假设,因为用户与PermissionGroup关联,所以应该可以。我已经建立了3个模型之间的关联,但问题似乎是查询没有深入到模型中
我还尝试将find的递归值设置为2、3和4。从我所读到的内容来看,我认为这可能不是一个好主意,可控制性更好,但肯定它至少应该起作用
我还要指出,这些联系是一种方式。我只把它们添加到我需要的模型中。所以类组与用户有关联,用户与PermissionGroup有关联
我是不是做错了什么?还是我误解了CakePHP的概念?
谢谢
更新:这是我第二次看到有人说我应该使用连接,就像这样:
'joins'=>array(
array(
'table'=>'rooms',
'alias'=>'Room',
'type'=>'inner',
'conditions'=>array(
'Room.hotel_id'=>'Hotel.id'
)
)
但我觉得这样做已经过时了。。。我也尝试过像这样使用contain:
'contain' => array(
'Group' => array(
'conditions' => array(
'Group.name' => '10'
)
)
)
但是它不起作用,我仍然得到了所有的用户。你的加入是正确的:
$joins = array(
array(
'table'=>'permission_groups',
'alias'=>'PemissionGroup',
'type'=>'inner',
'conditions'=>array(
'User.id = PermissionGroup.user_id',
'PermissionGroup.permissions = 10'
)
)
$this->Classgroup->User->find('list', array(
'fields' => array('User.surname_firstname'),
'joins' => $joins,
'order' => array(
'User.surname_firstname'
)
)
试试看 加入可能是最好的选择。。。你为什么要加入这个房间?你不应该加入PermissionGroup吗?很抱歉,这是我在别处找到的一段代码,我从未更改过。谢谢,它工作得很好。我真的厌倦了让它工作,你让我保持了一些理智。哦,我应该向其他人指出,我必须做两次连接,因为我的关系是多对多的。第一个是拥有权限的用户\组\用户。第二个是权限组,即拥有权限组的用户。