Thread Idee für Package "Nested Sets" (19 answers)
Opened by Hagen at 2010-03-03 14:14

pktm
 2010-07-02 01:23
#139286 #139286
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, man kann mehrere Bäume in einer Tabelle ablegen. Wenn man einen Knoten erstellt und zu diesem keinen Mutter-Knoten angibt, wird es eine Wurzel. Per default ist dann root_id = die ID aus dem Primärschlüssel.

Zusätzliche Daten kann man wie gewohnt angeben:
Code: (dl )
1
2
3
4
my $schema = MyTest::Schema->connect($dsn, $user, $auth, $attrs) or die("error connect: $!");
$schema->storage->debug(1);

my $root = $schema->resultset('Nested')->create({ ident => 'root', info => 'some_info' });


info ist eine zusätzliche Spalte in der Tabelle und in der Resultset-Definition enthalten.

Im Moment ist noch ein Bug drin, und zwar hinsichtlich des Defaults für root_id. Wollte das noch testen und dann melden.
In DBIx::Class::Tree::NestedSet::insert steht:
Code: (dl )
1
2
3
            $row->update({
$root => $primary_columns[0],
});


Zumindest MySQL beschwert sich da, dass id kein gültiger Wert für root_id ist. Man muss schreiben:
Code: (dl )
1
2
3
            $row->update({
$root => \$primary_columns[0],
});


Alles in allem hat es mir aber gerade gut gefallen, den ganzen hässlichen Code, den ich für nested sets hatte, weglegen zu können und das Modul zu benutzen.
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Idee für Package "Nested Sets"