mysql - Yii 2 Gridview - 搜索查询生成不明确的字段

标签 mysql gridview yii2

我正在生成相关记录搜索查询以供 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/

相关文章:

mysql - jsp jSTL sql查询标签使用声明的变量?

asp.net - 无法使用 dataformatstring 格式化日期时间

android - 在 Android 中向 gridview 添加页眉和页脚

php - 如何在加载表单时检查 Yii2.0 CheckboxList 项目?

mysql - phpmyadmin 警告, "The additional features for working with linked tables have been deactivated"

php - 社会-双向友谊关系

asp.net - 强制 ASP.NET GridView 分页器显示

php - yii2 htaccess 允许直接访问文件

php - Yii2 - 如果 View 文件不存在则重定向

php - 这两个查询之间的区别