![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Cześć. Mam pytanie. Tworzę w modelu zapytanie i samo zapytanie jest wmiarę krótki (kilka linijek kodu). Ale gdy muszę już wyfiltrować dane, to dochodzi ogromna ilość warunków WHERE. W jaki sposób dodawać warunki do zapytania? Czy w kontrolerze już stworzyć odpowiednią regułę WHERE czy w modelu? Czy w tej samej metodzie, co mam to główne zapytanie? Na tą chwilę do tej metody z głównym zapytaniem przesyłam tablicę $params, która zawiera odpowiednie wartości, dla których muszę utworzyć WHERE i HAVING. Jak Wy to rozwiązujecie?
-------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) ![]() ![]() |
Raczej odpowiednie metody powinny istnieć w modelu, a twój opis problemu jest zbyt lakoniczny, potrzebny jest przykład i podaj także z czego korzystasz.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Korzystam z Kohany, ale zapytanie jest na tyle długie i skomplikowane, że nie korzystam z ORM w tym przypadku.
Mam jedną metodę w modelu, która ma całe to długie zapytanie (SELECT FROM JOINY WHERE HAVING ORDER LIMIT). I z kontrolera przesyłam do tej metody tablicę $params, która wygląda np. tak: I moje pytanie brzmi, czy w tej metodzie z tym długim zapytaniem powinienem sobie operować na tej tablicy i tworzyć sobie ten cały wielki WHERE, czy przerzucić to do innej metody. Ponadto w jaki sposób najładniej to zrobić? Mysłałem, by robić to tak np.: Jakieś pomysły? @edit: Aha i co w przypadku, gdy dany parametr mógłby być pusty. Bez sensu wtedy by wyszło. Ten post edytował in5ane 5.03.2014, 09:01:07 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat : Aha i co w przypadku, gdy dany parametr mógłby być pusty. Bez sensu wtedy by wyszło. Naprawde nie potrafisz uzyc IF?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
No dobra, to jest OK, myślałem, że na tej nowej tablicy $where macie jakieś pomysły fajnie pooperować.
-------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja robię metodę w modelu, która przyjmuje tablicę filtrów. Na jej podstawie ręcznie dodaję WHERE do zapytania. Można to oczywiście puścić też automatem, ale robiąc to ręcznie masz większą kontrolę (ale fakt - więcej się napiszesz). Czasem 1 warunek filtru pociąga za sobą kolejne warunki WHERE i wtedy ładnie mogę to sobie owarunkować w metodzie. Ponadto czasem przekazuję takie filtry, które niekoniecznie odpowiadają kluczem nazwom kolumn lub wartością typom danych. Po prostu wiem jakie dane w efekcie chcę otrzymać, a jakie WHERE dodam to już moja sprawa.
Przykładowo:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:30 |