From 541b765eb4322d347b695f96c307b97ac8d11937 Mon Sep 17 00:00:00 2001 From: fangrenfu Date: Thu, 9 Jun 2016 09:32:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3selectInsert=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=AD=97=E6=AE=B5=E6=95=B0=E4=B8=8D=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mssql中为实现排序增加了row_number列,导致在selectInsert方法中字段数不一致。 修正方法:定义selectInsertSql属性,重写selectInsert方法。 --- library/think/db/builder/Sqlsrv.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/library/think/db/builder/Sqlsrv.php b/library/think/db/builder/Sqlsrv.php index 2851c473..4010fe3c 100644 --- a/library/think/db/builder/Sqlsrv.php +++ b/library/think/db/builder/Sqlsrv.php @@ -19,6 +19,7 @@ use think\db\Builder; class Sqlsrv extends Builder { protected $selectSql = 'SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER (%ORDER%) AS ROW_NUMBER FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%) AS thinkphp) AS T1 %LIMIT%%COMMENT%'; + protected $selectInsertSql = 'SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%'; protected $updateSql = 'UPDATE %TABLE% SET %SET% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%'; protected $deleteSql = 'DELETE FROM %TABLE% %USING% %JOIN% %WHERE% %LIMIT% %LOCK%%COMMENT%'; @@ -78,5 +79,10 @@ class Sqlsrv extends Builder } return 'WHERE ' . $limitStr; } + public function selectInsert($fields, $table, $options) + { + $this->selectSql=$this->selectInsertSql; + return parent::selectInsert($fields, $table, $options); + } }