1: <?php
2:
3: namespace PHPixie\ORM\Mappers;
4:
5: class Preload
6: {
7: protected $relationships;
8: protected $preloadMap;
9:
10: public function __construct($relationships, $preloadMap)
11: {
12: $this->relationships = $relationships;
13: $this->preloadMap = $preloadMap;
14: }
15:
16: public function map($preloadable, $modelName, $preload, $result, $plan)
17: {
18: foreach($preload->properties() as $property) {
19:
20: $propertyName = $property->propertyName();
21: $side = $this->preloadMap->get($modelName, $propertyName);
22:
23: $relationship = $this->relationships->get($side->relationshipType());
24: $handler = $relationship->handler();
25:
26: $preloader = $handler->mapPreload($side, $property, $result, $plan);
27:
28: $preloadable->addPreloader($propertyName, $preloader);
29: }
30: }
31: }