Witam, mam problem z dodawaniem rekordów do tabeli z kluczem złożonym. Jest to mój pierwszy projekt z doctrine (1.x) i powiem, że tutaj poległem.
Sytuacja wygląda następująco: jest tablica w której trzymam tłumaczenia entries, posiadająca klucz główny składający się z id i lang. Jest ona powiązana z innymi tablicami poprzez id, tzn. mam przykładowo tablicę employees w której mam FK entries.id.
Nie potrafię sobie poradzić z dodaniem rekordów do entries i połączeniem tego z employees.
Po zapisaniu do entries
$entries->lang = 'pl'; $entries->title = 'coś'; $entries->save(); $eid = $entries->identifier();
nie do konca rozumiem, tabela entries to tabela z tlumaczeniami? mozesz napisac nieco jasniej bo nie rozumiem dlaczego laczysz relacjami tlumaczenia do czegos wiecej niz do elementu tlumaczonego. i czy korzystasz z I18n?
Fakt, zbyt mało naświetliłem sprawę;-)
Tłumaczenia są u mnie robione dwutorowo. Drobne elementy, które są stałe w aplikacji, tłumaczone są przez Zend_Translate. Mam tutaj na myśli wszystkie teksty dotyczące obsługi formularzy - labele, errory itp, czy jakieś inne stałe opisy stron. Pozostałe treści, które mogą być edytowane przez użytkowników trzymam w tabeli z tłumaczeniami. Przykładowo, opis zakresu obowiązków pracownika, który może być edytowany przez usera trzymam w tabeli employees jako FK do tabeli z tłumaczeniami (entries). Tabela entries zawiera klucz złożony (id, lang) i inne kolumny typu title czy content zawierające właściwe teksty.
tebela entries id (PK) lang (PK) title content ...
tabela employees id name ... description - FK do entries.id ...
dlaczego nie uzyjesz tego?
http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/behaviors.html#i18n
Dziękuję za podsunięcie tego rozwiązania. Tak jak pisałem, to mój pierwszy projekt z doctrine i dlatego jaszcze nie ogarniam. Widzę jednak, że to rozwiązanie bazuje na dwóch tablicach czyli dla każdej w której mam kolumny tłumaczone muszę stworzyć tabele translations. Strasznie to mnoży byty.
Znalazłem inne rozwiązanie bez kluczy złożonych:
http://fczaja.blogspot.com/2010/08/multilanguage-database-design.html (przykład 2).
Zastanowię się co lepsze, ale i tak dziękuję za pomoc.
Pozdrawiam
doctrine2 ma rozszerzenie, ktore przechowuje tlumaczenia w jednej tabeli
https://github.com/l3pp4rd/DoctrineExtensions -> translatable
D1 ma wbudowane to co podalem - i tez sie to dobrze sprawdza.
a jesli chcialbys w D1 miec jedna tabele z tlumaczeniami to zapewne mialbys problem z laczeniem ich w dqlu, moim zdaniem za bardzo to komplikuje zycie zeby isc w te strone, bo jak wyszukac rekordy po tlumaczeniu bez pisania za kazdym razem nowych metod w klasach *Table?
uzyj i18l wbudowanego w D1 albo przejdz na D2 i uzywaj ktoregos z rozszerzen
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)