HABTM Cake php找到

时间:2014-12-05 03:47:27

标签: php cakephp associations has-and-belongs-to-many

我在下面有HABTM协会的表格。

user, group , groups_users

group , project, projects_groups

public $hasAndBelongsToMany = array(
            'Group' =>
            array(
                    'className' => 'Group',
                    'joinTable' => 'groups_users',
                    'foreignKey' => 'user_id',
                    'associationForeignKey' => 'group_id',
                    'unique' => 'keepExisting',
                    'conditions' => '',
                    'fields' => '',
                    'order' => '',
                    'limit' => '',
                    'offset' => '',
                    'finderQuery' => ''
            )
    );

我试图让所有用户,作为复选框的列表,使用项目ID使用下面的查询在项目上

$users = $this->User->Group->Project->find('list', 
            array(
                  'conditions' => array('Project.id' => $this->Session->read('Projectid'))
                  ,'contain' => array(
                          'User' => array( 'fields' => 'User.id', 'User.email') 
                    )
            )
        );

但是下面的错误

  

Model" Project"与模型"用户"

无关

我实际上已经尝试了不同的方法来使这个工作,但似乎无法正确,我怎么能实现我想要的。欢呼声

1 个答案:

答案 0 :(得分:0)

我用连接实现了我想要的东西,有没有办法通过使用模型关联而不是手动连接选项来实现?

    $options['joins'] = array(
        array('table' => 'groups_users',
            'alias' => 'gu',
            'type' => 'LEFT',
            'conditions' => array(
                'gu.user_id = User.id',
             ) 
        ),
        array('table' => 'projectGroups',
            'alias' => 'pg',
            'type' => 'LEFT',
            'conditions' => array(
                'pg.group_id = gu.group_id',
             ) 
        )
    );

    $this->User->recursive = -1;
    $options['conditions'] = array(
                    'pg.project_id = ' =>  $this->Session->read('Projectid'),
                    'User.Active = ' => true  
    );
    $users = $this->User->find('list', $options);