Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Doctrine] Select i zwracanie własnych obiektów
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty obsługi baz danych
snapshot
Czy istnieje możliwość zwracania w doctrine z Doctrine_Query jakiegoś własnego obiektu zamiast Doctrine_Collection? Mam tabele filmy i wyciągam z niej filmy. Jednak w kodzie chciałbym aby po wyciągnięciu od razu dane były dostępne w obiektach typu Video. Oczywiście mogę sobie te dane po wyciągnięciu z Doctrine_Collection pętlą przełożyć na kolekcję Video, ale takich zapytań z tą tabelą będę miał ogrom i chciałbym to jakoś zautomatyzować. 
cojack
Imo nie da rady. Instancja to instancja, nie przeskoczysz tego.
destroyerr
Szczerze mówiąc nie do końca wiem o co Ci chodzi. Nie wiem w jakiej relacji jest tabela filmy i klasa Video. Podejrzewam, że to to samo. Jeśli tak to co Ci przeszkadza Doctrine_Collection i co tak naprawdę chciałbyś uzyskać? Przecież w tej kolekcji masz od razu obiekty Video.

Od wersji 1.2 można zmienić klasę zapytania i klasę kolekcji.

snapshot
Chciałbym aby dane wyciągnięte z tabeli filmy były od razu dostępne jako kolekcja obiektów Video, które mają potrzebne metody i mam przygotowaną już obsługę w widokach i innych (ZF) dla tego typu klasy. Z tego co udało mi się znaleźć to potrzebne mi będzie albo własna klasa kolekcji (Custom Collection Class) chociaż tak na prawdę kolekcja może zostać nie zmienna, ważne aby wiersz był reprezentowany przez obiekt Video, co wydaje mi się mogę osiągnąć poprzez Hydrators. Z tego co widzę to niestety będę musiał przejść na wersję 1.2, która jest jeszcze w beta.
destroyerr
Chciałbym Ci pomóc, jednak jeśli nie wiem nic o tabeli filmy i klasie Video (jaka jest między nimi relacja) to nie jestem w stanie Ci pomóc.
cojack
destroyerr ale jemu chodzi o instancje obiektów a nie o to jak pobierać dane z tabeli. Pobiera dane z tabeli i obiekt zwracany przez doctrine jest instancji Data_Collection i jest to jak najbardziej słuszne, nie wiem po jaką cholerę zmieniać instancję klasy, lub nadawać jej nową. Jest to jest amen. Jak masz wywołanie modelu przez Doctrine::getTable('Nazwa_modelu'); to na czorta Ci sprawdzać instancje klasy? Sztuka dla sztuki to idź się pobaw w piaskownicy i zbuduj wieże Aifla w skali 1:1 z odwzorowaniem wszystkich szczegółów.
snapshot
Potrzeba jest na pewno, bo w wersji 1.2 wprowadzono Custom Collection Class czy właśnie hydrators, które częściowo są moim rozwiązaniem problemu. Udało mi się wyciągnąć z bazy bezpośrednio przy użyciu Doctrine_Collection obiekty Video, które tworzę właśnie w hydrators. Jeden problem to taki, że potem nie mogę korzystać z lazy loading, ale w sumie to jest to o co mi chodziło. Proszę następnym razem powstrzymać się od złośliwych komentarzy, jeśli nie potrafi się pomóc i nie rozumie się do końca problemu wynikającego z potrzeby pytającego.
cojack
Ja widzę potrzebę i już Ci tłumacze to jest wyuzdany idealizmy programisty. Amen.
destroyerr
Cytat
Proszę następnym razem powstrzymać się od złośliwych komentarzy, jeśli nie potrafi się pomóc i nie rozumie się do końca problemu wynikającego z potrzeby pytającego.

Widzisz żeby ktoś zrozumiał Twój problem poza Tobą? Nie potrafisz opisać problemu, to my nie mamy jak Tobie pomóc, możemy próbować dopasować rozwiązanie to wszystko. Jeśli się mylę i ktoś zrozumiał, to proszę o wytłumaczenie mi jeszcze raz.
Jedyne co wiemy to to, że masz tabele filmy i chcesz pobrać obiekty Video. Nie znamy związku pomiędzy tabelą filmy a obiektem Video.
snapshot
Nie chodzi mi o obiekt Video dziedziczący po BaseVideo i Doctrine_Record, tylko o własny obiekt np: Snapshot_Video. Związek jest taki, że chcę wsadzić dane z bazy do obiektów setterami, a potem sobie z tym obiektem, który ma potrzebne metody (implementowane z interface) operować i przekazywać do widoków i innych metod, które potrafią obsłużyć ten obiekt. Jak pisałem już 2 razy moim rozwiązaniem jest hydrator z wersji 1.2, więc jeśli dalej nie rozumiesz mojego problemu to może doc hydratora ci pomoże.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.