|  |  |  | @ -19,4 +19,35 @@ use yii\db\ActiveRelationTrait; | 
			
		
	
		
			
				
					|  |  |  |  | class ActiveRelation extends ActiveQuery implements ActiveRelationInterface | 
			
		
	
		
			
				
					|  |  |  |  | { | 
			
		
	
		
			
				
					|  |  |  |  | 	use ActiveRelationTrait; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	/** | 
			
		
	
		
			
				
					|  |  |  |  | 	 * @inheritdoc | 
			
		
	
		
			
				
					|  |  |  |  | 	 */ | 
			
		
	
		
			
				
					|  |  |  |  | 	public function createCommand($db = null) | 
			
		
	
		
			
				
					|  |  |  |  | 	{ | 
			
		
	
		
			
				
					|  |  |  |  | 		if ($this->primaryModel !== null) { | 
			
		
	
		
			
				
					|  |  |  |  | 			// lazy loading | 
			
		
	
		
			
				
					|  |  |  |  | 			if ($this->via instanceof self) { | 
			
		
	
		
			
				
					|  |  |  |  | 				// via pivot index | 
			
		
	
		
			
				
					|  |  |  |  | 				$viaModels = $this->via->findPivotRows([$this->primaryModel]); | 
			
		
	
		
			
				
					|  |  |  |  | 				$this->filterByModels($viaModels); | 
			
		
	
		
			
				
					|  |  |  |  | 			} elseif (is_array($this->via)) { | 
			
		
	
		
			
				
					|  |  |  |  | 				// via relation | 
			
		
	
		
			
				
					|  |  |  |  | 				/** @var ActiveRelation $viaQuery */ | 
			
		
	
		
			
				
					|  |  |  |  | 				list($viaName, $viaQuery) = $this->via; | 
			
		
	
		
			
				
					|  |  |  |  | 				if ($viaQuery->multiple) { | 
			
		
	
		
			
				
					|  |  |  |  | 					$viaModels = $viaQuery->all(); | 
			
		
	
		
			
				
					|  |  |  |  | 					$this->primaryModel->populateRelation($viaName, $viaModels); | 
			
		
	
		
			
				
					|  |  |  |  | 				} else { | 
			
		
	
		
			
				
					|  |  |  |  | 					$model = $viaQuery->one(); | 
			
		
	
		
			
				
					|  |  |  |  | 					$this->primaryModel->populateRelation($viaName, $model); | 
			
		
	
		
			
				
					|  |  |  |  | 					$viaModels = $model === null ? [] : [$model]; | 
			
		
	
		
			
				
					|  |  |  |  | 				} | 
			
		
	
		
			
				
					|  |  |  |  | 				$this->filterByModels($viaModels); | 
			
		
	
		
			
				
					|  |  |  |  | 			} else { | 
			
		
	
		
			
				
					|  |  |  |  | 				$this->filterByModels([$this->primaryModel]); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		return parent::createCommand($db); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | } |