Thread Aufrufen von Methoden einer übergeordneten Klasse: Object DBIx::ResultSet, will DBI::Class (11 answers)
Opened by Mangalore at 2006-06-02 11:55

Mangalore
 2006-06-02 11:55
#7828 #7828
User since
2006-05-09
17 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo, ich beisse mich derzeit durch Catalyst und Co und habe ein bisschen Probleme mit der etwas spärlichen Dokumentation.

Ich bin gerade auf ein Problem gestossen eine Methode augzurufen, die es mir erlaubt die Column-Namen eines Tables aus mysql zu bekommen. Für das Model in Catalyst benutze ich DBIx, die Tabellen sind in von DBIx::Class abgeleiteten Klassen.

Diese Klasse enthält die Methode 'columns' welche genau das obige ausführt.

In Catalyst wird die Ansteuerung von Objekten einer Webapplikation ja über ein Context-Object umgesetzt, wenn ich dieses aber aufrufe, um auf den Table zuzugreifen, bekomme ich ein DBIx::Class:ResultSet (Unterklasse von DBIx::Class) zurück und erhalte die Fehlermeldung:
DBIx::Class:ResultSet hat keine Methode "columns"

Zugriff auf den Table erfolgt so:
Code: (dl )
my $result = [$c->model('testDB::NameDesTable')->all]; 


Wobei 'testDB::NameDesTable' der Name der Tabelle ist und model() eine Catalyst-Methode, um das entsprechende Model-Objekt aufzurufen.

Anfang von NameDesTable.pm (Model der Tabelle):

Code: (dl )
1
2
3
package testDB::NameDesTable;

use base qw/DBIx::Class/;


Bei der Model-Definition wird aber eigentlich die DBIx::Class eingebunden, also scheint Catalyst von sich aus bei dem Zugriff auf eine Tabelle nur ein DBIx::Class:Resultset zurückzugeben.


Lange Rede, kurzer Sinn, gibt es irgendeine Möglichkeit (in Catalyst oder Perl allgemein) das ganze auf die Überklasse zu 'casten' bzw. die dahinterstehende Klasse zurückzubekommen, um deren Methoden verwenden zu können?


Danke für alle Anregungen, Ideen, Beschimpfungen!

[edit=betterworld]code-tags[/edit]\n\n

<!--EDIT|betterworld|1149236309-->

View full thread Aufrufen von Methoden einer übergeordneten Klasse: Object DBIx::ResultSet, will DBI::Class