php - 升级 Yii2 版本后查询不工作
问题描述
我正在将 Yii2 应用程序从 Yii 2.0.6 迁移到 Yii 2.0.37
有一个用于初始化 SqlDataProvider 的 SQL 查询:
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT * FROM new_form nf JOIN company_quote_log cql ON nf.log_id = cql.log_id JOIN company_quote_status_log cqsl ON cql.id = cqsl.company_quote_log_id WHERE cqsl.status_id IN (1,2,3,4,5,6,7) GROUP BY cql.log_id',
'sort' => [
'defaultOrder' => [
'form_id' => SORT_DESC
],
'attributes' => ['crdate', 'form_id']
],
'pagination' => [
'pageSize' => 5550,
]
]);
这 3 个表有一个id
列。
在旧版本中,它执行完美。在新版本中它抛出:
Database Exception – yii\db\Exception
SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id'
似乎需要重命名列以使 Yii 接受此查询。
MySql 服务器在两个环境中是相同的版本。
解决方案
通过明确命名上下文真正需要的列来修复,这些列在GridView
.
这通常是糟糕的代码。正如nbkSELECT table.* ...
在评论中提到的那样,这是不好的做法。