【发布时间】:2020-10-09 06:36:55
【问题描述】:
我正在将 Yii2 应用从 Yii 2.0.6 迁移到 Yii 2.0.37
有这个 SQL 查询用于初始化 SqlDataProvider:
$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 服务器在两个环境中是相同的版本。
【问题讨论】:
-
不要使用
SELECT *,除此之外是糟糕编程,你可以看到你加入后有2个id文件 -
不是2,有3列名为
id。但是 new_form 表有很多列,超过 100 个(不是我的设计)。是否有解决方法,或者必须明确列出列?