1

Company、Office、CompanyPersonTask の 3 つのモデルがあります。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

との間に適切な関連付けを指定したかのようCompanyOffice and CompanyPersonTask。すなわちCompany hasMany OfficeCompany hasMany CompanyPersonTask. 次に、次のように記述できます。Company Model では、次のように記述します。 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 に答える