Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Doctrine] Po aktualizacji do wer. 1.1.3 nie działa createRoot() itp.., Po prostu nie można nic zrobić przy pomocy Nested Set
Sajrox
post
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.

  1.  
  2. $category = new Kategorie();
  3. $category->name = 'Root Category 1';
  4. $category->save();
  5.  
  6. $categoryTable = Doctrine::getTable('Kategorie');
  7.  
  8. $treeObject = $categoryTable->getTree();
  9. $treeObject->createRoot($category);
  10.  
  11.  





Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
murwazy
post
Post #2





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):
  1. $record = new CategoryTree();
  2. $record->name = 'nowa kategoria podrzedna';
  3. //$record->Translation[$this->lang_s]->name = 'nowa kategoria podrzedna';
  4. //$record->Translation[$this->lang_s]->lang = $this->lang_s;
  5. $record->getNode()->insertAsLastChildOf(Doctrine::getTable('CategoryTree')->find($this->params['id']));
dodalem za to sprawdzenie czy drzewo istnieje i w razie potrzeb tworze je (oczywiscie dzieje sie to zanim mam mozliwosc wykonac cokolwiek na drzewie).
  1. if (!Doctrine::getTable('CategoryTree')->rootExist($this->lang_s_id)) Doctrine::getTable('CategoryTree')->addTree($this->lang_s_id);
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:
  1. public function nodeDown($id) {
  2. $record = $this->find($id);
  3. if ($record->getNode()->hasNextSibling()) {
  4. $sibling = $record->getNode()->getNextSibling();
  5. $record->getNode()->moveAsNextSiblingOf($sibling);
  6. }
  7. }
uzywam tego tak:
  1. $record = Doctrine::getTable('Cms_CategoryTree')->nodeDown($this->params['id']);
i sprawdza sie swietnie.

pozdrawiam

Ten post edytował murwazy 18.08.2009, 12:39:09
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 09:32