为什么我的发现条款不起作用?

时间:2012-08-16 16:34:18

标签: mysql cakephp cakephp-2.1

我有三种模式:公司,办公室,CompanyPersonTask。公司模型有很多Office,并且有许多CompanyPersonTask。

那么,为什么这段代码:

public function getCompaniesByRegion($region){
    $options['conditions'] = array("UPPER(Office.region) LIKE UPPER('".$region."%')");
    return $this->find('all', $options);   
}

导致以下错误?

  

“where子句”中的“未知列'Office.region'”

region表中<{1}}列

1 个答案:

答案 0 :(得分:1)

好像您已在CompanyOffice and CompanyPersonTask之间指定了正确的关联。即Company hasMany OfficeCompany hasMany CompanyPersonTask。 然后你可以把它写成: 在您的公司模型中写道:     public $ actAs = array('Containable');

你的方法应该是:

class AppController extends Controller
{
     public $uses = array('Company', 'Office', 'CompanyPersonTask');

     protected function _getCompaniesByRegion($region){
         return $this->Company->find('all', array('contain' => 
                    array('Office' => array('conditions' => array("UPPER(Office.region) LIKE " => "UPPER('".$region."%')")))
                                                 )
                                    );
     }        
}

您可以使用$this->_getCompaniesByRegion($region_val);

将此方法调用到任何控制器中