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:
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
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 ;-)