Thread DBIx::Class und rekursive Datenstrukturen (4 answers)
Opened by moritz at 2007-06-11 13:14

moritz
 2007-06-11 13:14
#35538 #35538
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Hallo,

um ein wenig Catalyst zu lernen schreibe ich gerade ein Gästebuch damit, und baue mir ein Backend mit DBIx::Class.

Das Gästebuch soll Threads darstellen können, und die entsprechende Datenbank hat die Einträge id, parent (die ID des Artikels, auf den geantwortet wurde), mesage, approved (ein boolean der angibt, ob der Artikel freigeschaltet wurde), timetamp, und eine Menge anderer Spalten, die gerade nicht von Interesse sind.

Meine Klasse sieht bisher so aus:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package MGBDB::Entry;

use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('mgb');
__PACKAGE__->add_columns(qw/id 
        ip 
        timestamp 
        parent 
        approved 
        message
               
 ...
        /);

__PACKAGE__->set_primary_key(qw/id/);

__PACKAGE__->has_many(siblings => 'MGBDB::Entry', 'parent');
1;


So, meine Fragen sind:

1) Ich hätte gerne eine Funktion, sagen wir filter(), die rekursiv nur Artikel liefert, bei denen approved == true wenn die Funktion mit einem true-Wert aufgerufen wurde, und nur solche, bei denen approved auf false steht, wenn sie mit 0 aufgerufen wurde.

Wenn ich ein einfaches
Code: (dl )
search( { approved => 1 })
mache, greift die Suchbedingung ja nur für die Toplevel-Einträge, und nicht für die "siblings".

2) Ich würde gerne per Default alle result sets dieses Modells absteigend nach `timestamp` sortieren - gibt es dazu einen eleganten Weg?

Wenn ich das Modell soweit habe, werde ich euch dann noch mit ein paar Catalyst-Fragen nerven ;-)

View full thread DBIx::Class und rekursive Datenstrukturen