CakePHP3,当连接两个表(mysql)时:未找到列:1054未知列'字段列表'

时间:2016-11-03 07:10:28

标签: mysql join cakephp-3.x

我是对cakePHP编程的新手。我需要加入四个表,但我开始加入这四个表中的两个。当我尝试加入时,我得到错误:

未找到列:1054未知列' s.state_code'在'字段列表'

我尝试过使用别名,如前所示。我也尝试过使用表名。 在我读过这个问题的可能解决方案中,我已经尝试了大部分解决方案。例如,缓存不是问题,我已经在更新模型数据库后删除了这些文件,并且我一直收到同样的错误。

这是officesController上的代码,这里是我收到错误的地方:

public function view(){ 
    $this->loadModel('States');

    $options['joins'] = array(
        array('table' => 'states',
            'alias' => 's',
            'type' => 'inner',
            'conditions' => array(
                'offices.state_code = s.state_code'
            )
        )    
    );

    $options['fields'] = array('offices.state_code', 'offices.office_name', 's.state_name');
    $offices = $this->Offices->find('all', $options);
    $this->set('offices',$offices);


}

我还尝试了以下代码,这个代码的问题是它只从Offices表中检索数据,而不是从State检索数据:

    $this->loadModel('States');

    $offices = $this->Offices->find('all',
       array('joins' => array(
            array('table' => 'states',
                    'alias' => 's',
                    'type' => 'left',
                    'foreignKey' => true,
                    'conditions' => array(
                        'offices.state_code = s.state_code')
                )
            )
        )
    );
    $this->set('offices', $offices);

此外,使用上面的代码,我尝试使用false和true值的foreignkey,结果完全相同。 另外,我不确定如何从两个表中选择特定字段。 任何帮助将非常感激。感谢。

办公室用SQL表:

CREATE TABLE offices(
    office_id VARCHAR(10) NOT NULL,
    office_name VARCHAR(128),
    address VARCHAR(128),
    state_code VARCHAR (5),
    PRIMARY KEY(office_code),
    FOREIGN KEY(state_code) REFERENCES states(state_code)
);

状态表的SQL:

CREATE TABLE states(
    state_code VARCHAR(5) NOT NULL,
    state_name VARCHAR(50),
    PRIMARY KEY (state_code)
);

0 个答案:

没有答案