Yii 使用 Relation 从另一个模型获取数据

Yii Get data from another model using Relation

我正在尝试使用模型中的搜索功能在我的视图中过滤 table。 我有两个模型,我需要将数据从模型 Evaluation 获取到另一个模型 EvaluationDetails

我的 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,
        ));
    }

我正在尝试过滤 table 用户将在其中搜索姓名,将值传递给 $search,然后在我的 EvaluationDetails 中的搜索功能中使用该值模型 有了这个,我得到一个错误。

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'employee_id' in where clause is ambiguous. The SQL statement executed was: SELECT COUNT(DISTINCT t.id) FROM trx_evaluation_details t LEFT OUTER JOIN trx_evaluation eval ON (t.eval_id=eval.id) WHERE ((eval.evaluatee LIKE :ycp0) AND (employee_id=:ycp1))

我的代码似乎有什么问题。请帮助..

从报错信息来看,好像EvaluationDetails和Evaluation都有一个字段调用"employee_id"(我不确定)

但如果是这样,您需要更换

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

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

明确告诉 yii 该字段来自 EvaluationDetails table。

顺便说一句,你正在使用 $employee->company_id (应该是 $employee->employee_id 吗?)