| @@ 343-357 (lines=15) @@ | ||
| 340 | * @param \DOMElement $mapping Doctrine XML mapping |
|
| 341 | * @return array |
|
| 342 | */ |
|
| 343 | private function getDoctrineFields(\DOMElement $mapping) |
|
| 344 | { |
|
| 345 | $xpath = new \DOMXPath($mapping->ownerDocument); |
|
| 346 | $xpath->registerNamespace('doctrine', 'http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping'); |
|
| 347 | ||
| 348 | return array_map( |
|
| 349 | function (\DOMElement $element) { |
|
| 350 | return [ |
|
| 351 | 'name' => $element->getAttribute('fieldName'), |
|
| 352 | 'type' => $element->getAttribute('type'), |
|
| 353 | ]; |
|
| 354 | }, |
|
| 355 | iterator_to_array($xpath->query('doctrine:field', $mapping)) |
|
| 356 | ); |
|
| 357 | } |
|
| 358 | ||
| 359 | /** |
|
| 360 | * Get doctrine document embed-one fields |
|
| @@ 365-379 (lines=15) @@ | ||
| 362 | * @param \DOMElement $mapping Doctrine XML mapping |
|
| 363 | * @return array |
|
| 364 | */ |
|
| 365 | private function getDoctrineEmbedOneFields(\DOMElement $mapping) |
|
| 366 | { |
|
| 367 | $xpath = new \DOMXPath($mapping->ownerDocument); |
|
| 368 | $xpath->registerNamespace('doctrine', 'http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping'); |
|
| 369 | ||
| 370 | return array_map( |
|
| 371 | function (\DOMElement $element) { |
|
| 372 | return [ |
|
| 373 | 'name' => $element->getAttribute('field'), |
|
| 374 | 'type' => $element->getAttribute('target-document'), |
|
| 375 | ]; |
|
| 376 | }, |
|
| 377 | iterator_to_array($xpath->query('*[self::doctrine:embed-one or self::doctrine:reference-one]', $mapping)) |
|
| 378 | ); |
|
| 379 | } |
|
| 380 | ||
| 381 | /** |
|
| 382 | * Get doctrine document embed-many fields |
|
| @@ 387-401 (lines=15) @@ | ||
| 384 | * @param \DOMElement $mapping Doctrine XML mapping |
|
| 385 | * @return array |
|
| 386 | */ |
|
| 387 | private function getDoctrineEmbedManyFields(\DOMElement $mapping) |
|
| 388 | { |
|
| 389 | $xpath = new \DOMXPath($mapping->ownerDocument); |
|
| 390 | $xpath->registerNamespace('doctrine', 'http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping'); |
|
| 391 | ||
| 392 | return array_map( |
|
| 393 | function (\DOMElement $element) { |
|
| 394 | return [ |
|
| 395 | 'name' => $element->getAttribute('field'), |
|
| 396 | 'type' => $element->getAttribute('target-document'), |
|
| 397 | ]; |
|
| 398 | }, |
|
| 399 | iterator_to_array($xpath->query('*[self::doctrine:embed-many or self::doctrine:reference-many]', $mapping)) |
|
| 400 | ); |
|
| 401 | } |
|
| 402 | } |
|
| 403 | ||