|  |  | @ -130,62 +130,63 @@ class Connection extends \yii\base\ApplicationComponent | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $pdo; |  |  |  | 	public $pdo; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @var boolean whether to enable schema caching. | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * Note that in order to enable truly schema caching, a valid cache component as specified | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * by [[schemaCacheID]] must be enabled and [[schemaCacheEnabled]] must be set true. | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see schemaCacheDuration | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see schemaCacheExclude | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see schemaCacheID | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	public $enableSchemaCache = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var integer number of seconds that table metadata can remain valid in cache. |  |  |  | 	 * @var integer number of seconds that table metadata can remain valid in cache. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Defaults to -1, meaning schema caching is disabled. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Use 0 to indicate that the cached data will never expire. |  |  |  | 	 * Use 0 to indicate that the cached data will never expire. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * |  |  |  | 	 * @see enableSchemaCache | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Note that in order to enable schema caching, a valid cache component as specified |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * by [[schemaCacheID]] must be enabled. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see schemaCachingExclude |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see schemaCacheID |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $schemaCachingDuration = -1; |  |  |  | 	public $schemaCacheDuration = 3600; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var array list of tables whose metadata should NOT be cached. Defaults to empty array. |  |  |  | 	 * @var array list of tables whose metadata should NOT be cached. Defaults to empty array. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * The table names may contain schema prefix, if any. Do not quote the table names. |  |  |  | 	 * The table names may contain schema prefix, if any. Do not quote the table names. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see schemaCachingDuration |  |  |  | 	 * @see enableSchemaCache | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $schemaCachingExclude = array(); |  |  |  | 	public $schemaCacheExclude = array(); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var string the ID of the cache application component that is used to cache the table metadata. |  |  |  | 	 * @var string the ID of the cache application component that is used to cache the table metadata. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Defaults to 'cache'. |  |  |  | 	 * Defaults to 'cache'. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see schemaCachingDuration |  |  |  | 	 * @see enableSchemaCache | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $schemaCacheID = 'cache'; |  |  |  | 	public $schemaCacheID = 'cache'; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var integer number of seconds that query results can remain valid in cache. |  |  |  | 	 * @var boolean whether to enable query caching. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Defaults to -1, meaning query caching is disabled. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Use 0 to indicate that the cached data will never expire. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 * Note that in order to enable query caching, a valid cache component as specified |  |  |  | 	 * Note that in order to enable query caching, a valid cache component as specified | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * by [[queryCacheID]] must be enabled. |  |  |  | 	 * by [[queryCacheID]] must be enabled and [[queryCacheEnabled]] must be set true. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * The method [[cache()]] is provided as a convenient way of setting this property |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * and [[queryCachingDependency]] on the fly. |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 * |  |  |  | 	 * | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see cache |  |  |  | 	 * Methods [[beginCache()]] and [[endCache()]] can be used as shortcuts to turn on | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see queryCachingDependency |  |  |  | 	 * and off query caching on the fly. | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see queryCacheDuration | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see queryCacheID |  |  |  | 	 * @see queryCacheID | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see queryCacheDependency | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see beginCache() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see endCache() | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $queryCachingDuration = -1; |  |  |  | 	public $enableQueryCache = false; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var \yii\caching\Dependency the dependency that will be used when saving query results into cache. |  |  |  | 	 * @var integer number of seconds that query results can remain valid in cache. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Defaults to null, meaning no dependency. |  |  |  | 	 * Defaults to 3600, meaning one hour. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see queryCachingDuration |  |  |  | 	 * Use 0 to indicate that the cached data will never expire. | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * @see enableQueryCache | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $queryCachingDependency; |  |  |  | 	public $queryCacheDuration = 3600; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var integer the number of SQL statements that need to be cached when they are executed next. |  |  |  | 	 * @var \yii\caching\Dependency the dependency that will be used when saving query results into cache. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Defaults to 0, meaning the query result of the next SQL statement will NOT be cached. |  |  |  | 	 * Defaults to null, meaning no dependency. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Note that each time after executing a SQL statement (whether executed on DB server or fetched from |  |  |  | 	 * @see enableQueryCache | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * query cache), this property will be reduced by 1 until 0. |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see queryCachingDuration |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $queryCachingCount = 0; |  |  |  | 	public $queryCacheDependency; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @var string the ID of the cache application component that is used for query caching. |  |  |  | 	 * @var string the ID of the cache application component that is used for query caching. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Defaults to 'cache'. |  |  |  | 	 * Defaults to 'cache'. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @see queryCachingDuration |  |  |  | 	 * @see enableQueryCache | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public $queryCacheID = 'cache'; |  |  |  | 	public $queryCacheID = 'cache'; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
	
		
		
			
				
					|  |  | @ -297,24 +298,29 @@ class Connection extends \yii\base\ApplicationComponent | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Sets the parameters about query caching. |  |  |  | 	 * Turns on query caching. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * This method is provided as a shortcut to setting three properties that are related |  |  |  | 	 * This method is provided as a shortcut to setting two properties that are related | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * with query caching: [[queryCachingDuration]], [[queryCachingDependency]] and |  |  |  | 	 * with query caching: [[queryCacheDuration]] and [[queryCacheDependency]]. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * [[queryCachingCount]]. |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 * @param integer $duration the number of seconds that query results may remain valid in cache. |  |  |  | 	 * @param integer $duration the number of seconds that query results may remain valid in cache. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * See [[queryCachingDuration]] for more details. |  |  |  | 	 * See [[queryCacheDuration]] for more details. | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	 * @param \yii\caching\Dependency $dependency the dependency for the cached query result. |  |  |  | 	 * @param \yii\caching\Dependency $dependency the dependency for the cached query result. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * See [[queryCachingDependency]] for more details. |  |  |  | 	 * See [[queryCacheDependency]] for more details. | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @param integer $queryCount the number of SQL queries that need to be cached after calling this method. |  |  |  | 	 */ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * See [[queryCachingCount]] for more details. |  |  |  | 	public function beginCache($duration = null, $dependency = null) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @return Connection the connection instance itself. |  |  |  | 	{ | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		$this->enableQueryCache = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		if ($duration !== null) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			$this->queryCacheDuration = $duration; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		$this->queryCacheDependency = $dependency; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * Turns off query caching. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public function cache($duration = 300, $dependency = null, $queryCount = 1) |  |  |  | 	public function endCache() | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		$this->queryCachingDuration = $duration; |  |  |  | 		$this->enableQueryCache = false; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		$this->queryCachingDependency = $dependency; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		$this->queryCachingCount = $queryCount; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return $this; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
	
		
		
			
				
					|  |  | 
 |