Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][ZendFramework2] + Doctrine2, Doctrine Hydrator i hydrowanie kaskadowe
Adi32
post 3.10.2014, 06:36:31
Post #1





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witajcie.

(ZF2 lub S2 chyba nie różnią się w korzystaniu z hydratora D2)

Czy spotkaliście się z kaskadową hydracją?

  1. $hydrator = $this->getServiceLocator()->get('DoctrineHydrator');
  2. $hydrator->hydrate((array) $data, $PlatformEntity);


$data zawiera wielowymiarową tablicę z danymi w takiej formie w jakiej Doctrine te dane zwraca (czyli format tablicy jest odpowiedni aby wykonać na niej kaskadową hydrację).
$PlatformEntity to encja edytowanego/tworzonego rekordu.

Po przepuszczeniu encji przez hydrator powstają w niej odpowiednie zagnieżdżenia, czyli encje rekordów relacyjnych. To znaczy że hydrator wykrył dodatkowe dane i przygotował pod nie przestrzeń.
Jednak wszystkie encje na głębokości większej niż 1 nie są hydrowane...

Encje pobieram w taki sposób:
  1. if (isset($data['id'])) {
  2. $PlatformEntity = $em->getRepository('Application\Entity\Platform')->find($data['id']);
  3. unset($data['id']);
  4. } else {
  5. $PlatformEntity = new Platform();
  6. }


Hydrator tak:
  1. 'DoctrineHydrator' => function($sm){
  2. return new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($sm->get('Doctrine\ORM\EntityManager'), false);
  3. },


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:03