使用CakePHP模型查询多个关联

使用CakePHP模型查询多个关联,php,cakephp,has-and-belongs-to-many,Php,Cakephp,Has And Belongs To Many,我对CakePHP(从昨晚开始)非常陌生,我在查询方面遇到了问题 我的模型的工作方式如下: 类别组>用户>权限组 基本上,类组由大量用户组成,每个用户都属于一个权限组。该组定义用户的类型及其权限 现在,我需要进行一个查询,从中获取属于某个PermissionGroup的所有用户,但我是从ClassgroupsController进行查询的 但是,每当我尝试这样做时: $this->Classgroup->User->find('list', array(

我对CakePHP(从昨晚开始)非常陌生,我在查询方面遇到了问题

我的模型的工作方式如下:

类别组>用户>权限组

基本上,类组由大量用户组成,每个用户都属于一个权限组。该组定义用户的类型及其权限

现在,我需要进行一个查询,从中获取属于某个PermissionGroup的所有用户,但我是从ClassgroupsController进行查询的

但是,每当我尝试这样做时:

$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吗?很抱歉,这是我在别处找到的一段代码,我从未更改过。谢谢,它工作得很好。我真的厌倦了让它工作,你让我保持了一些理智。哦,我应该向其他人指出,我必须做两次连接,因为我的关系是多对多的。第一个是拥有权限的用户\组\用户。第二个是权限组,即拥有权限组的用户。