Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Jeśli mamy mapowanie rekordów na obiekty, to każdy rekord jest jednym obiektem więc przy jednym rekordzie zwróconym z DB, dany ORM zwraca nam jeden obiekt roprezentujący ten rekord. Gdy DB zwróci więcej niż jeden obiekt to co? ORM zwraca tablice obiektów?
Teraz pytanie. Co, jeśli jest tak jak napisałem wyżej, i do końca nie wiemy dokładnie, co zostanie nam zwrócone, jeden czy więcej obiektów. W takim razie zostaje mi tylko sprawdzanie zwróconej wartości i if - else tak? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%)
|
Wszystko pieknie opisales, ale zapomniales dodac, o jaki ORM ci chodzi. Podaj nazwe/framework
Ten post edytował lukaskolista 3.08.2012, 07:13:28 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Nie opisywałem na konkretnym przykładzie ORM-a. Chodziło mi o ogólną zasadę działania. Aż tak bardzo różnią się np Doctrine od Propel?
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%)
|
Nie tylko doctrine i propel istnieja. Jesli pytasz sie o to, jaki typ danych zwraca metoda to nie jest juz kwestia ogolej konwencji ORM, a konkretnego modulu.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Modułu to znaczy? Możesz rozwinąć myśl?
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%)
|
@adbacz: tak łopatologicznie: to jest tak jak opisałeś, zależnie od użytej metody ORM zwracają albo obiekty, albo kolekcje.
Zawsze to samo powinno być zwracane, to jest proste. Gdy metoda może zwrócić tylko i wyłącznie (zawsze) jeden obiekt (lub nic), to zwraca obiekt, tak jest w przypadku pobierania filtrowanego z kluczem unikatowym (czy zazwyczaj kluczem głównym, który z założenia jest zawsze unikatowy). Czyli piszesz sobie taką metodę do pobierania obiektu po primary key i ona zawsze zwraca albo znaleziony obiekt, albo null. A pozostałe metody, które mogą zwracać więcej wierszy, zwracają zawsze kolekcje. Takie kolekcje są puste, gdy nie ma wierszy, ale nie powinno to być null, bo trzeba by wtedy sprawdzać czy jest null czy nie jest, a jak zawsze jest kolekcją to można np. od razu wstawiać do foreach, które się najwyżej nie wykona. Dla tych metod nawet jak w wyniku jest jeden obiekt, to jest to kolekcja z jednym obiektem. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%)
|
Dziękuję Ci za wyjaśnienie tej kwestii.
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%)
|
To jeszcze takie uzupełnienie, bo zapomniałem o tym poprzednio: w ORMach powszechnie też stosuje się metody typu "findOneRow", do których przekazuje się zwykle jakieś kryteria filtrowania, i te metody, jak sama nazwa wskazuje, też zawsze zwracają tylko jeden obiekt, nawet, gdyby mogło by ich być więcej w wynikach zapytania. Zwracany jest zawsze pierwszy obiekt i w zasadzie te metody same troszczą się o dodanie odpowiedniej klauzuli wybierającej tylko jeden wiersz z wykonywanego zapytania (np. LIMIT 1).
|
|
|
|
![]() ![]() |
|
Aktualny czas: 24.10.2026 - 04:14 |