HABTM加入Cakephp

时间:2016-10-18 18:59:38

标签: cakephp cakephp-2.0 cakephp-2.3

你好我有一个表名University_Industry。它具有uni_idind_id作为大学表格和行业表格的foriegn键。所以意味着大学将拥有许多行业和行业将拥有许多大学。我通过运行此查询成功获得结果

public function getAllUniv(){
    return $this->find('all', array(
        'order' => 'uni_id',
        ));
     }

此查询返回我的大学及其行业。结果看起来像这样

Array
(
    [0] => Array
        (
            [University] => Array
                (
                    [uni_id] => 1
                    [uni_name] => NYC
                )

            [Industry] => Array
                (
                    [0] => Array
                        (
                            [ind_id] => 1
                            [ind_name] => Finance
                            [UniversityIndustry] => Array
                                (
                                    [id] => 1
                                    [uni_id] => 1
                                    [ind_id] => 1
                                )

                        )

                    [1] => Array
                        (
                            [ind_id] => 2
                            [ind_name] => Accounting
                            [UniversityIndustry] => Array
                                (
                                    [id] => 2
                                    [uni_id] => 1
                                    [ind_id] => 2
                                )

                        )

                )

        )

现在我有另一个名为用户的表,其中uni_id也作为外键。所以我正在寻找一个查询,它只能获取那些在用户表中找到的行业的大学。所以它应该只获取那些uni_id存在于用户表中的大学

我不知道如何在查询中加入用户表并获得结果。

这就是我的大学模态目前的样子

class University extends AppModel
{   

    public $useTable = 'university';    
    public $primaryKey = 'uni_id';

    public $hasAndBelongsToMany = array(
    'Industry' =>
        array(
            'className'              => 'Industry',
            'joinTable'              => 'university_industry',
            'foreignKey'             => 'uni_id',
            'associationForeignKey'  => 'ind_id',
            'unique'                 => true,
            'conditions'             => '',
            'fields'                 => '',
            'order'                  => '',
            'limit'                  => '',
            'offset'                 => '',
        ),
       );
    public function getAllUniv(){
    return $this->find('all', array(
        'order' => 'uni_id',
        ));
     }
}

1 个答案:

答案 0 :(得分:4)

您可以在查找查询中加入数据。

$this->find('all', array(
    'order' => 'uni_id',
    'joins' => array(  
        array(
        'table' => 'users ',
        'alias' => 'UserJoin',
        'type' => 'inner',
        'conditions' => array(
            'UserJoin.uni_id = University.id'
            )
        ),
    ));

这是official doc。希望它能帮到你