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 吗?)
我正在尝试使用模型中的搜索功能在我的视图中过滤 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
) FROMtrx_evaluation_details
t
LEFT OUTER JOINtrx_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 吗?)