我正在生成相关记录搜索查询以供 Gridview 使用
我收到此错误:
SQLSTATE[23000]:违反完整性约束:1052 where 子句中的列“dbowner”不明确
正在执行的 SQL 为:SELECT COUNT(*) FROM tbl_iolcalculation
LEFT JOIN tbl_iolcalculation
patent
ON tbl_iolcalculation
。患者_id
= 患者
.id
WHERE (dbowner
=1) AND (dbowner
=1)
我有两个相关模型 1) iolcalculation 和患者 - 每个 iolcalculation 有一名患者 (iolcalculation.patent_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 代码中这个不明确的引用? 提前致谢
最佳答案
$query->andFilterWhere([
// previous filters
self::tableName() . '.structure_id' => $this->structure_id,
// next filters
]);
关于mysql - Yii 2 Gridview - 搜索查询生成不明确的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398959/