1: <?php
2:
3: namespace PHPixie\ORM\Relationships\Type\OneTo\Type;
4:
5: class One extends \PHPixie\ORM\Relationships\Type\OneTo
6: {
7:
8: public function entityProperty($side, $entity)
9: {
10: return new One\Property\Entity($this->handler(), $side, $entity);
11: }
12:
13: public function queryProperty($side, $query)
14: {
15: return new One\Property\Query($this->handler(), $side, $query);
16: }
17:
18: public function preloader($side, $modelConfig, $result, $loader)
19: {
20: if ($side->type() === 'owner') {
21: return $this->ownerPreloader($side, $modelConfig, $result, $loader);
22: }
23:
24: return $this->itemPreloader($side, $modelConfig, $result, $loader);
25: }
26:
27: protected function config($configSlice)
28: {
29: return new One\Side\Config($this->configs->inflector(), $configSlice);
30: }
31:
32: protected function side($type, $config)
33: {
34: return new One\Side($type, $config);
35: }
36:
37: protected function sideTypes($config)
38: {
39: return array('owner', 'item');
40: }
41:
42: protected function buildHandler()
43: {
44: return new One\Handler(
45: $this->models,
46: $this->planners,
47: $this->plans,
48: $this->steps,
49: $this->loaders,
50: $this->mappers,
51: $this
52: );
53: }
54:
55: protected function ownerPreloader($side, $modelConfig, $result, $loader)
56: {
57: return new One\Preloader\Owner($side, $modelConfig, $result, $loader);
58: }
59:
60: protected function itemPreloader($side, $modelConfig, $result, $loader)
61: {
62: return new One\Preloader\Item($side, $modelConfig, $result, $loader);
63: }
64:
65: }
66: