You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.3 KiB
						
					
					
				| <?php | |
| /** | |
|  * @link http://www.yiiframework.com/ | |
|  * @copyright Copyright (c) 2008 Yii Software LLC | |
|  * @license http://www.yiiframework.com/license/ | |
|  */ | |
|  | |
| namespace yii\mongodb; | |
|  | |
| use yii\db\ActiveRelationInterface; | |
| use yii\db\ActiveRelationTrait; | |
|  | |
| /** | |
|  * ActiveRelation represents a relation to Mongo Active Record class. | |
|  * | |
|  * @author Paul Klimov <klimov.paul@gmail.com> | |
|  * @since 2.0 | |
|  */ | |
| class ActiveRelation extends ActiveQuery implements ActiveRelationInterface | |
| { | |
| 	use ActiveRelationTrait; | |
|  | |
| 	/** | |
| 	 * @inheritdoc | |
| 	 */ | |
| 	protected function buildCursor($db = null) | |
| 	{ | |
| 		if ($this->primaryModel !== null) { | |
| 			// lazy loading | |
| 			if ($this->via instanceof self) { | |
| 				// via pivot collection | |
| 				$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::buildCursor($db); | |
| 	} | |
| } |