[Doctrine] Po aktualizacji do wer. 1.1.3 nie działa createRoot() itp.., Po prostu nie można nic zrobić przy pomocy Nested Set |
[Doctrine] Po aktualizacji do wer. 1.1.3 nie działa createRoot() itp.., Po prostu nie można nic zrobić przy pomocy Nested Set |
17.08.2009, 20:31:25
Post
#1
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) |
Witam,
Czy ktoś także zauwazył problemy z Nested Set a mianowicie z funkcją createRoot() itp ? Po aktualizacji z wersji 1.1.2 do 1.1.3 są problemy z tą klasą. Kod który działał już nie działa.
|
|
|
17.08.2009, 21:41:42
Post
#2
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 13.04.2007 Skąd: Szczecin Ostrzeżenie: (0%) |
nie zauwazylem zadnych problemow. co konkretnie jest nie tak?
sprawdzilem u siebie i mam tak
Ten post edytował murwazy 17.08.2009, 21:45:39 |
|
|
18.08.2009, 11:37:44
Post
#3
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) |
A więć. Dzisiaj usiadłem sobie i zrobiłem to samo co wczoraj i co ? Działa !
Może miałem jakiś zastój w Apache, cholera wie. Ale działa i to jest najważniejsze. Ale mam kilka pytań do tego modułu w Doctrine. 1) Czy jest on bardzo wydajny przy budowie dynamicznie rozwijanego drzewa kategorii w ajaxie. 2) Po co są te pola w bazie "lft" i "rgt" czy mogą mi się jakoś przydać Dołączam także przykłąd mojej klasy do dodawania do bazy kategorii przy pomocy tego mechanizmu.
|
|
|
18.08.2009, 12:37:49
Post
#4
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 13.04.2007 Skąd: Szczecin Ostrzeżenie: (0%) |
widze ze moda na nieczytanie dokumentacji ciagle obecna ;-)
dodatkowo zerknij tu: http://www.dbf.pl/faq/tresc.html?rozdzial=1#o1_9 metoda 3 mechanizm jest bardzo wydajny, ale od dynamicznego wyciagania dzieci ajaxem lepsze jest wyciagniecie calego drzewa i keszowanie go za pomoca dokryny albo frameworka. "lft" i "rgt" cie nie interesuja, napisali nawet w dokumentacji, za to "level" jest uzyteczny. twoja metoda do dodania wydaje mi sie malo uniwersalna. co bedzie, jesli model danych zaklada tlumaczenia? ja zrezygnowalem z pisania takiego kodu, tam gdzie potrzebuje dodaje po prostu te 3 linie (i ew modyfikuje je wg potrzeb): dodalem za to sprawdzenie czy drzewo istnieje i w razie potrzeb tworze je (oczywiscie dzieje sie to zanim mam mozliwosc wykonac cokolwiek na drzewie). jak widzisz tworze drzewa, ktore maja id jezyka jako roota, to mi zapewnia zroznicowana strukture dla kazdego z jezykow w systemie - ale to tak na marginesie. warto za to "opakowac" sobie "przesuwanie" lisci/galezi w klasie bazowej dla klas *Table doktryny: uzywam tego tak: i sprawdza sie swietnie. pozdrawiam Ten post edytował murwazy 18.08.2009, 12:39:09 |
|
|
18.08.2009, 15:32:15
Post
#5
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) |
Ciekawe Co do wersji językowych to z tym nie miałem do czynienia jeszcze w Dictrine ale na pewno się z tym zapoznam.
Mam tylko pytanie co do Cachowania drzewa. Kod który stosuję nie działa:
A co do komentowania to aż tak tragicznie ? Hehe. Jeszcze gdyby to nie był problem to napisz proszę jak np. wyciagasz dzieci kategorii na levelu 1. Chciałbm pobrać tylko dzieci danej kategorii (root) o levelu np. 1 W dokumentacji jest tylko wyciąganie całego drzewa bez mozliwości pobrania kategorii na danym poziomie Edit: I jeszcze chciałbym zaproponować pewien sposób na sortowanie pozycji kategorii.
metoda move() przesuwa nam kategorie na dowolne miejsce na liście. Możemy tutaj przesunąć kategorie z 2 na 20 miejsce na liście Ten post edytował Sajrox 18.08.2009, 16:55:57 |
|
|
18.08.2009, 16:49:48
Post
#6
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 13.04.2007 Skąd: Szczecin Ostrzeżenie: (0%) |
Mam tylko pytanie co do Cachowania drzewa. Kod który stosuję nie działa: sprawdz to mozesz rownie dobrze "opakowac" ten kawalek kodu w zend_cache - wtedy wywalasz ->useResultCache(true); A co do komentowania to aż tak tragicznie ? Hehe. obawiam sie ze nie rozumiem:) ----- kurcze nie da sie opublikowac 2 postow po sobie? wystepuje jakis blad ale tresci nie ma... Jeszcze gdyby to nie był problem to napisz proszę jak np. wyciagasz dzieci kategorii na levelu 1. Chciałbm pobrać tylko dzieci danej kategorii (root) o levelu np. 1 tak jak juz pisalem keszuje cale drzewo i ew w szablonie daje if ($level == 1) {}.W dokumentacji jest tylko wyciąganie całego drzewa bez mozliwości pobrania kategorii na danym poziomie potestuj uzycie czegos takiego: ale zauwazylem ze czasem wychodza cuda jak sie zamiesza z zapytaniem. inna sprawa ze masz metody getAncestors(), getDescendants(), getChildren(). no i obok fetchTree() masz do dyspozycji fetchBranch() - nie ma jej w manualu - polecam zerkac do api http://www.doctrine-project.org/Doctrine_Tree_NestedSet/1_1 I jeszcze chciałbym zaproponować pewien sposób na sortowanie pozycji kategorii.
metoda move() przesuwa nam kategorie na dowolne miejsce na liście. Możemy tutaj przesunąć kategorie z 2 na 20 miejsce na liście nie analizowalem tego algorytmu ale skoro mowisz ze dziala to pewnie dziala:) uzywam wyzej/nizej/pierwszy/ostatni i dodatkowo mam przenoszenie lisci/galezi za pomoca ajaxa - drag&drop, nie mialem potrzeby takiego przesuniecia jak opisales. pozdrawiam Ten post edytował murwazy 18.08.2009, 20:34:13 |
|
|
19.08.2009, 10:59:39
Post
#7
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) |
Dzieki wielkie za wyjaśnienie
Generalnie co do wyciagania samych dzieci użyłem funkcji getChildren() Jeszcze męczy mnie jeden problem: Mam kod
Otóż gdy w tabeli FirmyOpisy jest krotka o firmy_id = 1 to wszystko jest ok jednak gdy jej nie ma wywala błąd:
Jakby nie mogło po prostu nic nie wyświetlić albo zwrócić false a tutaj taki błąd. Można jakoś przed wywołaniem save() sprawdzić czy krotka istnieje w tabeli ? |
|
|
19.08.2009, 11:38:18
Post
#8
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 13.04.2007 Skąd: Szczecin Ostrzeżenie: (0%) |
Jakby nie mogło po prostu nic nie wyświetlić albo zwrócić false a tutaj taki błąd. Można jakoś przed wywołaniem save() sprawdzić czy krotka istnieje w tabeli ? zwraca false, tylko ze pozniej na tym false wywolujesz metode save()
pozdrawiam Ten post edytował murwazy 19.08.2009, 11:39:10 |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 20:25 |