|  |  | @ -55,22 +55,24 @@ class QueryBuilder extends \yii\base\Object | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * Generates a SELECT SQL statement from a [[Query]] object. |  |  |  | 	 * Generates a SELECT SQL statement from a [[Query]] object. | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @param Query $query the [[Query]] object from which the SQL statement will be generated |  |  |  | 	 * @param Query $query the [[Query]] object from which the SQL statement will be generated | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 * @return string the generated SQL statement |  |  |  | 	 * @return array the generated SQL statement (the first array element) and the corresponding | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 * parameters to be bound to the SQL statement (the second array element). | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 */ |  |  |  | 	 */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public function build($query) |  |  |  | 	public function build($query) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		$params = $query->params; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		$clauses = array( |  |  |  | 		$clauses = array( | 
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildSelect($query->select, $query->distinct, $query->selectOption), |  |  |  | 			$this->buildSelect($query->select, $query->distinct, $query->selectOption), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildFrom($query->from), |  |  |  | 			$this->buildFrom($query->from), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildJoin($query->join, $query->params), |  |  |  | 			$this->buildJoin($query->join, $params), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildWhere($query->where, $query->params), |  |  |  | 			$this->buildWhere($query->where, $params), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildGroupBy($query->groupBy), |  |  |  | 			$this->buildGroupBy($query->groupBy), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildHaving($query->having, $query->params), |  |  |  | 			$this->buildHaving($query->having, $params), | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildUnion($query->union, $query->params), |  |  |  | 			$this->buildUnion($query->union, $params), | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildOrderBy($query->orderBy), |  |  |  | 			$this->buildOrderBy($query->orderBy), | 
			
		
	
		
		
			
				
					
					|  |  |  | 			$this->buildLimit($query->limit, $query->offset), |  |  |  | 			$this->buildLimit($query->limit, $query->offset), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		); |  |  |  | 		); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return implode($this->separator, array_filter($clauses)); |  |  |  | 		return array(implode($this->separator, array_filter($clauses)), $params); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** |  |  |  | 	/** | 
			
		
	
	
		
		
			
				
					|  |  | @ -718,9 +720,11 @@ class QueryBuilder extends \yii\base\Object | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		foreach ($unions as $i => $union) { |  |  |  | 		foreach ($unions as $i => $union) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if ($union instanceof Query) { |  |  |  | 			if ($union instanceof Query) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				// save the original parameters so that we can restore them later to prevent from modifying the query object | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				$originalParams = $union->params; | 
			
		
	
		
		
			
				
					
					|  |  |  | 				$union->addParams($params); |  |  |  | 				$union->addParams($params); | 
			
		
	
		
		
			
				
					
					|  |  |  | 				$unions[$i] = $this->build($union); |  |  |  | 				list ($unions[$i], $params) = $this->build($union); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				$params = $union->params; |  |  |  | 				$union->params = $originalParams; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return "UNION (\n" . implode("\n) UNION (\n", $unions) . "\n)"; |  |  |  | 		return "UNION (\n" . implode("\n) UNION (\n", $unions) . "\n)"; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |