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

时间:2015-11-20 08:06:39

标签: php search yii relation

我正在尝试使用模型中的搜索功能在视图中过滤表格。 我有两个模型需要从模型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,
        ));
    }

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

  

CDbCommand无法执行SQL语句:SQLSTATE [23000]:   违反完整性约束:1052列' employee_id'在哪儿   条款含糊不清。执行的SQL语句是:SELECT   COUNT(DISTINCT tid)FROM trx_evaluation_details t LEFT OUTER   加入trx_evaluation eval ON(teval_id = evalid)WHERE   ((eval.evaluatee LIKE:ycp0)AND(employee_id =:ycp1))

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

1 个答案:

答案 0 :(得分:1)

从错误消息看,看起来EvaluationDetails和Evaluation都有一个字段调用“employee_id”(我不确定)

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

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

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

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

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