Php 查询Yii2版本升级后不工作
我正在将一个Yii2应用程序从Yii2.0.6迁移到Yii2.0.37 此SQL查询用于初始化SqlDataProvider:Php 查询Yii2版本升级后不工作,php,mysql,yii2,Php,Mysql,Yii2,我正在将一个Yii2应用程序从Yii2.0.6迁移到Yii2.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.
$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,
]
]);
这三个表有一个id
列
在旧版本中,它执行得非常完美。在新版本中,它抛出:
Database Exception – yii\db\Exception
SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id'
似乎需要重命名列以使Yii接受此查询
MySql服务器在两种环境中都是相同的版本。通过明确命名上下文真正需要的列(即
GridView
中使用的列)进行修复
这通常是错误的代码<代码>选择表。*…是一个不好的做法,正如注释中提到的那样。不要使用
SELECT*
,此外,这是一个不好的编程,因为您可以看到在连接后有2个id文件,而不是2个,有3列名为id
。但是新的表单表有很多列,超过100列(不是我的设计)。是否有解决方法,或者必须明确列出列?