1

我有三个模型:Company、Office、CompanyPersonTask。Company 模型有许多 Office 和许多 CompanyPersonTask。

那么,为什么是这段代码:

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

导致以下错误?

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

region存在offices表中。

4

1 回答 1

1

好像您已经在 with 之间指定了正确的关联Company关系Office 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);

于 2012-08-17T04:32:46.743 回答