Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12957[/thread]

DBIx::Class - alle Akzessoren ausgeben



<< >> 9 Einträge, 1 Seite
pktm
 2009-01-06 01:22
#117598 #117598
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Wenn ich ein Resultset erzeuge:
Code: (dl )
my $rs = $schema->resultset('Table')->search(undef);


Wie kann ich dann eine Auflistung aller verfügbaren Akzessoren erhalten?
Ich habe da nämlich eine has_many-Relation definiert, die nicht zu funktionieren scheint, und ich würde gerne wissen, ob da eventuell b ei der Deklaration was schief gegangen ist, und mir deshalb mal die möglichen A. ansehen.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2009-01-06 01:28
#117599 #117599
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
vielleicht kannst du es in CPAN:Class::Inspector reinwerfen.

zeig doch aber einfach mal deine relationships.
pktm
 2009-01-06 02:00
#117601 #117601
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hier die betreffenden Relationen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package Bulletinboard::Schema::Topic;

use strict;
use warnings;
use base qw/DBIx::Class/;

__PACKAGE__->load_components(qw/ PK::Auto Core /);

__PACKAGE__->table('topics');
__PACKAGE__->add_columns(qw/topic_id topic position/);
__PACKAGE__->set_primary_key('topic_id');
__PACKAGE__->has_many(boards => 'Bulletinboard::Schema::Board', 'board_id');

1;


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package Bulletinboard::Schema::Board;

use strict;
use warnings;
use base qw/DBIx::Class/;

__PACKAGE__->load_components(qw/ PK::Auto Core /);

__PACKAGE__->table('boards');
__PACKAGE__->add_columns(qw/board_id topic_id title position description/);
__PACKAGE__->set_primary_key('board_id');
__PACKAGE__->belongs_to(topic => 'Bulletinboard::Schema::Topic', 'topic_id');
__PACKAGE__->has_many(threads => 'Bulletinboard::Schema::Thread', 'thread_id');

1;


Wenn ich jetzt irgendwo im Code alle Boards von einem Topic aufrufe kommt nix zurück:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my $rs = $schema->resultset('Topic')->search(undef);

foreach my $t ( $rs->all() ) {
say "t: " . $t->topic();

# geht
my $brs = $schema->resultset('Board')->search({topic_id => $t->topic_id()});
say "board count: " . $brs->count();

# geht nicht
my $boards = $t->boards();
say "board count: " . $boards->count();
}


Ausgabe:
Quote
t: 1
board count: 0
board count: 0
t: 2
board count: 1
board count: 0
t: 3
board count: 0
board count: 0
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2009-01-06 02:31
#117602 #117602
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ist das von der logic nicht falsch rum? also gehören nicht viele topics zu einem board ? naja, egal. versuch mal

Code: (dl )
__PACKAGE__->has_many(boards => 'Bulletinboard::Schema::Board', { 'foreign.topic_id' => 'self.topic_id' } );


'board_id' ist ja in topics gar nicht definiert.
pktm
 2009-01-06 02:36
#117603 #117603
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ah ja! Ich dachte, ich hätte in der Dokumentation gelesen, der dritte Parameter wäre der Fremdschlüssel.
Aber wenn ich es explizit angebe, wie du es geschrieben hast, dann funktionirt es.

Danke!
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2009-01-06 02:44
#117604 #117604
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
pktm+2009-01-06 01:36:38--
Ah ja! Ich dachte, ich hätte in der Dokumentation gelesen, der dritte Parameter


[doku]
has_many

Arguments: $accessor_name, $related_class, $foreign_key_column|$cond?, $attr?
[/doku]
-> sowohl als auch! ;)
renee
 2009-01-06 09:48
#117607 #117607
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht hilft Dir auch http://renee-baecker.de/talks/DBIx_Class.pdf
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2009-01-06 13:32
#117623 #117623
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
renee+2009-01-06 08:48:47--
Vielleicht hilft Dir auch http://renee-baecker.de/talks/DBIx_Class.pdf


Ja, das habe ich :)
Aber wie gesagt, ich dachte, die explizite Version wäre hier überflüssig - ist sie aber nicht.
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2009-01-06 13:35
#117624 #117624
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
pktm+2009-01-06 12:32:45--
Aber wie gesagt, ich dachte, die explizite Version wäre hier überflüssig - ist sie aber nicht.


selbst wenn: 'board_id' war ja auch der falsche ansatz.
'topic_id' könnte es fast tun.
<< >> 9 Einträge, 1 Seite



View all threads created 2009-01-06 01:22.