我生成相關記錄的搜索查詢的GridView使用的Yii 2的GridView - 搜索查詢產生曖昧領域
我得到這個錯誤: SQLSTATE [23000]:完整性約束違規:1052列「的dbowner」在where子句含糊不清 正在執行的SQL是:SELECT COUNT(*)FROM tbl_iolcalculation
LEFT JOIN tbl_iolcalculation
patient
ON tbl_iolcalculation
。 patient_id
= patient
。 id
WHERE(dbowner
= 1)AND(dbowner
= 1)
我有兩個相關的模型1)iolcalculation和患者 - 每個iolcalculation具有一個患者(iolcalculation.patient_id - > patient.id)
相關的代碼在我的模型IolCalculationSearch是:
public function search($params)
{
$query = IolCalculation::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->sort->attributes['patient.lastname'] = [
'asc' => ['patient.lastname' => SORT_ASC],
'desc' => ['patient.lastname' => SORT_DESC],
];
$query->joinWith(['patient'=> function($query) { $query->from(['patient'=>'tbl_iolcalculation']); } ]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'patient_id' => $this->patient_id,
'preop_id' => $this->preop_id,
'calculation_date' => $this->calculation_date,
'iol_calculated' => $this->iol_calculated,
產生這個錯誤的原因是,每個模型都有一個覆蓋到默認Where子句如下,爲多個用戶數據的原因需要從其他用戶隔離,通過領域dbowner:
public static function defaultWhere($query) {
parent::init();
$session = new Session();
$session->open();
$query->andWhere(['t.dbowner' => $session['dbowner']]);
}
這是在擴展ActiveRecord的一個基礎模型定義,然後所有工作模式擴展這個示範基地
如何解決在MySQL代碼這個曖昧的參考? 在此先感謝
導致同樣的錯誤只P2說:SQLSTATE [23000]:完整性約束衝突:1052 where子句中的'dbowner'列含糊不清 正在執行的SQL是:SELECT COUNT(*)FROM'tbl_iolcalculation' LEFT JOIN'tbl_iolcalculation'' patient p2' ON'tbl_iolcalculation'.'patient_id' ='patient p2'。 'id' WHERE('dbowner' = 1)AND('dbowner' = 1)******我需要的是以某種方式將別名添加到'downer'列 - 感謝您的考慮 – gpc 2015-04-01 22:25:26