![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
A napiszę coś może ciekawszego niż pytania o BOM, czy headers already sent
![]() Opis tego co chciałbym uzyskać opiszę w skali micro. Musi to mieć przełożenie na skalę macro. Mamy sobie stronę z raportem. Raport dotyczy użytkowników (bazowa tabela) Muszę teraz dodać do tego filtrowanie - prościzna Jest sobie N filtrów po których mogę filtrować userów. Na cele demonstracyjne przyjmiemy: - filtrowanie po statusie użytkowania (tabela users) - filtrowanie po zamówieniach np. użytkownicy mający zamówienia w statusie pedding (tabela orders) - filtrowanie po produktach z zamówieć np: użytkownicy którzy zamówili zestaw X (tabela order_positions) - filtrowanie po adresach użytkowników (tabela user_adresses) Jak widać do każdego niemal filtra potrzebny jest LEFT JOIN z tabelką + odpowiedni WHERE Muszę zbudować w miarę przyjazne rozwiązanie które pozwoli mi zdefiniować Criteria filtrów które będą miały w sobie JOIN + CONDITIONS. Problemy które widzę to: - Kolejność JOIN ma znaczenie (chyba oczowiste) - Każde Criteria musi zawierać pełny zestaw danych typu JOIN i WHERE - Podczas aplikowania wielu Criterias JOIN muszą być odfiltrowane i wrzucone w odpowiedniej kolejności (jak określić wagę...) - i pewnie wiele innych Generalnie idealne rozwiązanie byłoby zrobić Kod new CriteriaCollection([ new OrderStatusCriteria(...), new OrderProductSthCriteria(...), ])->applyOn($qb) To taka rozkmina. Ma ktoś jakieś koncepcje albo rozwiązania? Zapraszam doo dyskusji ![]() PS. Inną metodą byłoby zbudowanie Grafu gdzie Vertex jest tabelą a Edge jest relacją między Vertexami. Przy robieniu A - C wybirać wszystko i skleić w kolejności w jakiej algo wyszuka ścieżkę (nie musi to być A - B - C ale może być A - D - E - C) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:00 |