mam dość skomplikowany problem w CakePHP, może ktoś mi pomoże wpaść na właściwe rozwiązanie. Piszę aplikację w której mam model Foo z tabelą foos . I chciałbym żeby Foo miało parametr / pole (odnoszące się poprzez relację HABTM) do modelu Bar. Przy czym wolałbym nie tworzyć osobne tabeli bars dla tego modelu. Ponieważ tabela bars będzie bardzo mała, z pięć pozycji. Nawet w czasie nie urośnie za wiele, dwa do pięciu wpisów na przestrzeni pięciu lat, a może w ogóle. Więc nie chciałbym tworzyć tabeli i sprawiać że CakePHP będzie generował kolejne zapytania SELECT. Czy ktoś ma pojęcie jak to można uzyskać?
Jednym z rozwiązań o którym myślałem jest utworzenie fixtury dla tabeli bars i utworzenie fizyczne tylko tabeli bars_foos, która i tak będzie względnie mała. Nie mogę jednak znaleźć sposobu na użycie TestFixture w normalnym Controller.
Drugim rozwiązaniem jest zapisywanie do pola JSON'a albo serializowanego Array zamiast tabeli pośredniej. Tylko nie wiem jak zrobić żeby CakePHP widziało coś takiego jako relację.
Opis problemu z przykładem z życia:
Mam tabelę z rowerami Bikes. I każdy rower ma swój main_type . Który teraz może być jednym z listy {"MTB","Road","Trekking","City","Downhill"} . Wiem że przez długi czas lista nie urośnie, bo nowe rodzaje rowerów nie powstają co dzień. Jeśli komuś wydaje się że może być setki rodzajów rowerów "cyclo cross", "ATB" "XC" itp., to powiedzmy że mam drugie pole parametr specialized_type. To musi być relacja HABTM, ale tabela main_types będzie bardzo małą i chciałbym znaleźć bardziej wydajne rozwiążanie.
Ponieważ:
- - To obciąża MySQL w obliczeniach
- Komplikuje zapytania do MySQL
- Muszę robić dodatkową tabelę dla MainType
- Mam więcej modeli do odczepienia (unbind) kiedy chcę pobrać obiekt korzystając z recursive a nie każdego powiązanego obiektu
- Wstaw tutaj cokolwiek chcesz...