mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-10-31 02:28:35 +08:00 
			
		
		
		
	Fix #18134: Instance of ExpressionInterface will not be quoted in Connection:quoteColumnName
				
					
				
			This commit is contained in:
		| @ -24,6 +24,7 @@ Yii Framework 2 Change Log | ||||
| - Enh #18120: Include path to the log file into error message if `FileTarget::export` fails (uaoleg) | ||||
| - Enh #15202: Add optional param `--silent-exit-on-exception` in `yii\console\Controller` (egorrishe) | ||||
| - Bug #18110: Add quotes to return value of viewName in MSSQL schema. It is `[someView]` now (darkdef) | ||||
| - Bug #18134: Instance of `ExpressionInterface` will not be quoted in `Connection:quoteColumnName` (darkdef) | ||||
|  | ||||
|  | ||||
| 2.0.35 May 02, 2020 | ||||
|  | ||||
| @ -925,11 +925,15 @@ class Connection extends Component | ||||
|      * If the column name contains prefix, the prefix will also be properly quoted. | ||||
|      * If the column name is already quoted or contains special characters including '(', '[[' and '{{', | ||||
|      * then this method will do nothing. | ||||
|      * @param string $name column name | ||||
|      * If the column name is an instance of `ExpressionInterface` it is returned as is. | ||||
|      * @param string $name|ExpressionInterface column name | ||||
|      * @return string the properly quoted column name | ||||
|      */ | ||||
|     public function quoteColumnName($name) | ||||
|     { | ||||
|         if ($name instanceof ExpressionInterface) { | ||||
|             return $name; | ||||
|         } | ||||
|         if (isset($this->_quotedColumnNames[$name])) { | ||||
|             return $this->_quotedColumnNames[$name]; | ||||
|         } | ||||
|  | ||||
| @ -2523,6 +2523,17 @@ abstract class QueryBuilderTest extends DatabaseTestCase | ||||
|         $this->assertEquals($expectedParams, $params); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see https://github.com/yiisoft/yii2/issues/18134 | ||||
|      */ | ||||
|     public function testExpressionIsNotQuotedInColumnName() | ||||
|     { | ||||
|         $query = (new Query())->where(['like', new Expression('name'), 'string']); | ||||
|         list($sql, $params) = $this->getQueryBuilder()->build($query); | ||||
|         $this->assertEquals('SELECT * WHERE name LIKE :qp0'.$this->likeEscapeCharSql, $sql); | ||||
|         $this->assertEquals([':qp0' => "%string%"], $params); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see https://github.com/yiisoft/yii2/issues/15653 | ||||
|      */ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 DarkDef
					DarkDef