| @@ 9-43 (lines=35) @@ | ||
| 6 | ||
| 7 | use Indigerd\Hydrator\Hydrator; |
|
| 8 | ||
| 9 | class ElasticHydrator extends Hydrator |
|
| 10 | { |
|
| 11 | /** |
|
| 12 | * @param $target |
|
| 13 | * @param array $data |
|
| 14 | * @return object |
|
| 15 | */ |
|
| 16 | public function hydrate($target, array $data): object |
|
| 17 | { |
|
| 18 | $entityData = []; |
|
| 19 | if (isset($data['_id'])) { |
|
| 20 | $entityData['id'] = (string)$data['_id']; |
|
| 21 | } |
|
| 22 | ||
| 23 | $entityData += $data['_source']; |
|
| 24 | ||
| 25 | return parent::hydrate($target, $entityData); |
|
| 26 | } |
|
| 27 | ||
| 28 | /** |
|
| 29 | * @param object $object |
|
| 30 | * @param array $fields |
|
| 31 | * @return array |
|
| 32 | */ |
|
| 33 | public function extract(object $object, array $fields = []): array |
|
| 34 | { |
|
| 35 | $result = parent::extract($object, $fields); |
|
| 36 | if (isset($result['id'])) { |
|
| 37 | $result['_id'] = $result['id']; |
|
| 38 | unset($result['id']); |
|
| 39 | } |
|
| 40 | ||
| 41 | return $result; |
|
| 42 | } |
|
| 43 | } |
|
| 44 | ||
| @@ 7-27 (lines=21) @@ | ||
| 4 | ||
| 5 | use Indigerd\Hydrator\Hydrator; |
|
| 6 | ||
| 7 | class MongoHydrator extends Hydrator |
|
| 8 | { |
|
| 9 | public function hydrate($target, array $data): object |
|
| 10 | { |
|
| 11 | if (isset($data['_id'])) { |
|
| 12 | $data['id'] = (string)$data['_id']; |
|
| 13 | unset($data['_id']); |
|
| 14 | } |
|
| 15 | return parent::hydrate($target, $data); |
|
| 16 | } |
|
| 17 | ||
| 18 | public function extract(object $object, array $fields = []): array |
|
| 19 | { |
|
| 20 | $result = parent::extract($object, $fields); |
|
| 21 | if (isset($result['id'])) { |
|
| 22 | $result['_id'] = $result['id']; |
|
| 23 | unset($result['id']); |
|
| 24 | } |
|
| 25 | return $result; |
|
| 26 | } |
|
| 27 | } |
|
| 28 | ||