1: <?php
2:
3: namespace PHPixie\ORM\Relationships\Type\Embeds;
4:
5: abstract class Handler extends \PHPixie\ORM\Relationships\Relationship\Implementation\Handler
6: implements \PHPixie\ORM\Relationships\Relationship\Handler\Mapping\Database,
7: \PHPixie\ORM\Relationships\Relationship\Handler\Mapping\Embedded,
8: \PHPixie\ORM\Relationships\Relationship\Handler\Preloading
9: {
10: public function mapPreload($side, $property, $result, $plan)
11: {
12: $config = $side->config();
13: $preloadResult = $this->relationship->preloadResult($result, $config->path);
14:
15: $preloader = $this->relationship->preloader();
16:
17: $this->mappers->preload()->map(
18: $preloader,
19: $config->itemModel,
20: $property->preload(),
21: $preloadResult,
22: $plan
23: );
24:
25: return $preloader;
26: }
27:
28: public function mapDatabaseQuery($query, $side, $group, $plan)
29: {
30: $this->mapConditionBuilder($query, $side, $group, $plan);
31: }
32:
33: public function mapEmbeddedContainer($container, $side, $group, $plan)
34: {
35: $this->mapConditionBuilder($container, $side, $group, $plan);
36: }
37:
38: protected function removeItemFromOwner($item)
39: {
40: $owner = $item->owner();
41: if ($owner !== null) {
42: $propertyName = $item->ownerPropertyName();
43: $property = $owner->getRelationshipProperty($propertyName);
44: if ($property instanceof Type\One\Property\Entity\Item) {
45: $property->remove();
46: } else {
47: $property->remove($item);
48: }
49: }
50: }
51:
52: abstract protected function mapConditionBuilder($builder, $side, $group, $plan);
53: }
54: