@@ -88,25 +88,25 @@ |
||
88 | 88 | list($relatedField, $valueField, $mapper) = $this->getOtherFieldNameInfo(); |
89 | 89 | if ($this->autoTraverse) $this->offsetSetAutotraverse($value, $relatedField, $valueField); |
90 | 90 | else if ($this->doUpdateInterMapper($value, $relatedField, $valueField)) { |
91 | - $record = $value; |
|
91 | + $record = $value; |
|
92 | 92 | $record->{$this->parentField} = $value->{$this->intermediateName}->{$this->localField}; |
93 | 93 | $record->$valueField = $this->object->{$relatedField}; |
94 | 94 | $this->intermediateMapper[] = $record; |
95 | 95 | } |
96 | 96 | } |
97 | 97 | |
98 | - private function doUpdateInterMapper($record, $relatedField, $valueField) { |
|
99 | - return !(isset($record->{$this->parentField}) && isset($record->{$this->intermediateName}) && |
|
100 | - $record->{$this->parentField} == $record->{$this->intermediateName}->{$this->localField} && |
|
101 | - $record->$valueField == $this->object->{$relatedField}); |
|
102 | - } |
|
103 | - |
|
104 | - private function offsetSetAutotraverse($value, $relatedField, $valueField) { |
|
105 | - $record = new \stdClass; |
|
106 | - $record->{$this->parentField} = $value->{$this->localField}; |
|
107 | - $record->$valueField = $this->object->{$relatedField}; |
|
108 | - $this->intermediateMapper[] = $record; |
|
109 | - } |
|
98 | + private function doUpdateInterMapper($record, $relatedField, $valueField) { |
|
99 | + return !(isset($record->{$this->parentField}) && isset($record->{$this->intermediateName}) && |
|
100 | + $record->{$this->parentField} == $record->{$this->intermediateName}->{$this->localField} && |
|
101 | + $record->$valueField == $this->object->{$relatedField}); |
|
102 | + } |
|
103 | + |
|
104 | + private function offsetSetAutotraverse($value, $relatedField, $valueField) { |
|
105 | + $record = new \stdClass; |
|
106 | + $record->{$this->parentField} = $value->{$this->localField}; |
|
107 | + $record->$valueField = $this->object->{$relatedField}; |
|
108 | + $this->intermediateMapper[] = $record; |
|
109 | + } |
|
110 | 110 | |
111 | 111 | public function offsetUnset($id) { |
112 | 112 | //$this->relation->mapper->filter([$relatedField => $this->object->$valueField, $this->relation->parentField => $id])->delete(); |
@@ -37,7 +37,7 @@ discard block |
||
37 | 37 | //bit hacky, breaking encapsulation, but simplest way to work out the info for the other side of the many:many relationship. |
38 | 38 | private function getOtherFieldNameInfo() { |
39 | 39 | if ($this->otherInfo == null) { |
40 | - $propertyReader = function($name) {return $this->$name; }; |
|
40 | + $propertyReader = function($name) {return $this->$name; }; |
|
41 | 41 | |
42 | 42 | $reader = $propertyReader->bindTo($this->intermediateMapper, $this->intermediateMapper); |
43 | 43 | |
@@ -45,7 +45,7 @@ discard block |
||
45 | 45 | $propertyReader = $propertyReader->bindTo($relation, $relation); |
46 | 46 | if ($propertyReader('parentField') != $this->parentField) { |
47 | 47 | $relation = $relation->getData($this->object); |
48 | - $this->otherInfo = [$propertyReader('localField'), $propertyReader('parentField'), $propertyReader('mapper')]; |
|
48 | + $this->otherInfo = [$propertyReader('localField'), $propertyReader('parentField'), $propertyReader('mapper')]; |
|
49 | 49 | } |
50 | 50 | } |
51 | 51 | } |
@@ -103,7 +103,7 @@ discard block |
||
103 | 103 | |
104 | 104 | private function offsetSetAutotraverse($value, $relatedField, $valueField) { |
105 | 105 | $record = new \stdClass; |
106 | - $record->{$this->parentField} = $value->{$this->localField}; |
|
106 | + $record->{$this->parentField} = $value->{$this->localField}; |
|
107 | 107 | $record->$valueField = $this->object->{$relatedField}; |
108 | 108 | $this->intermediateMapper[] = $record; |
109 | 109 | } |
@@ -32,8 +32,12 @@ discard block |
||
32 | 32 | list($relatedField, $valueField, $mapper) = $this->getOtherFieldNameInfo(); |
33 | 33 | $this->results = $data; |
34 | 34 | $this->object = $parentObject; |
35 | - if (empty($parentObject->{$relatedField})) return; |
|
36 | - foreach ($data as $dt) $this[] = $dt; |
|
35 | + if (empty($parentObject->{$relatedField})) { |
|
36 | + return; |
|
37 | + } |
|
38 | + foreach ($data as $dt) { |
|
39 | + $this[] = $dt; |
|
40 | + } |
|
37 | 41 | } |
38 | 42 | |
39 | 43 | //bit hacky, breaking encapsulation, but simplest way to work out the info for the other side of the many:many relationship. |
@@ -88,8 +92,9 @@ discard block |
||
88 | 92 | |
89 | 93 | public function offsetSet($name, $value) { |
90 | 94 | list($relatedField, $valueField, $mapper) = $this->getOtherFieldNameInfo(); |
91 | - if ($this->autoTraverse) $this->offsetSetAutotraverse($value, $relatedField, $valueField); |
|
92 | - else if ($this->doUpdateInterMapper($value, $relatedField, $valueField)) { |
|
95 | + if ($this->autoTraverse) { |
|
96 | + $this->offsetSetAutotraverse($value, $relatedField, $valueField); |
|
97 | + } else if ($this->doUpdateInterMapper($value, $relatedField, $valueField)) { |
|
93 | 98 | $record = $value; |
94 | 99 | $record->{$this->parentField} = $value->{$this->intermediateName}->{$this->localField}; |
95 | 100 | $record->$valueField = $this->object->{$relatedField}; |