2015-11-20 31 views
0

我想在我的模型中使用搜索功能在視圖中過濾表格。 我有兩個模型,我需要從模型Evaluation獲取數據到另一個模型EvaluationDetailsYii使用Relation從其他模型中獲取數據

我有這個在我的EvaluationDetails模型

public function relations() { 
     return array(
      'eval' => array(self::BELONGS_TO, 'Evaluation', 'eval_id'), 
     ); 
    } 

我也有這個在我的搜索功能

public function search($employee = '', $search_date_start = '', $search_date_end = '', $search = '') { 

     $criteria = new CDbCriteria; 
     $criteria->with = array('eval' => array('together' => true)); 
     $criteria->compare('employee_id', $this->employee_id); 
     $criteria->compare('remarks', $this->remarks, true); 
     $criteria->compare('eval_id', $this->eval_id); 
     $criteria->compare('eval.evaluatee', $this->evaluatee_search);    

     $criteria->addSearchCondition('eval.evaluatee', $search); 

     if ($employee != '') 
      $criteria->compare('employee_id', $employee->company_id); 

     return new CActiveDataProvider($this, array(
      'criteria' => $criteria, 
     )); 
    } 

我試圖篩選表的用戶,其中,將一個名稱搜索,傳遞$search中的值,然後在我的EvaluationDetails模型 的搜索功能中使用此值,我收到錯誤消息。

CDbCommand未能執行SQL語句:SQLSTATE [23000]: 完整性約束違規:1052列在 條款不明確 '的Employee_ID'。執行的SQL語句是:SELECT COUNT (DISTINCT tid。)FROM trx_evaluation_detailst LEFT OUTER JOIN trx_evaluationeval ON(teval_id = evalid。)其中 ((eval.evaluatee LIKE:ycp0)AND(EMPLOYEE_ID =: ycp1))

什麼似乎是我的代碼的問題。請幫助..

回答

1

從錯誤信息看,它看起來既像EvaluationDetails和評價有一個字段叫「僱員標識」(我不知道)

但如果是這樣,你需要更換

$criteria->compare('employee_id', $employee->company_id); 

$criteria->compare('t.employee_id', $employee->company_id); 

明確地告訴Yii的領域是從EvaluationDetails表。

順便說一句,你正在使用$ employee-> company_id(應該是$ employee-> employee_id?)

+0

哇。我的意思是感謝你的迴應。它確實節省了我的一天。自昨天起我一直在尋找答案.. –