Thread DBIx::Class (3 answers)
Opened by Froschpopo at 2007-11-30 17:57

renee
 2007-11-30 22:26
#103339 #103339
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das bestimmt man im Prinzip schon bei der Erstellung der Klassen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
package Froschpopo::Model::Database;

use base qw/DBIx::Class::Schema/;

__PACKAGE__->load_classes(qw/
    User
    Fotos
/);

1;


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package Froschpopo::Model::Database::User;

use strict;
use warnings;
use base qw(DBIx::Class);

__PACKAGE__->load_components( qw(PK::Auto Core) );
__PACKAGE__->table( 'user' );

__PACKAGE__->add_columns( qw(
    user_id
    vorname
    nachname
));
__PACKAGE__->set_primary_key( 'user_id' );

__PACKAGE__->has_many( Fotos => 'Froschpopo::Model:Database::Foto',
                      { 'foreign.user_id' => 'self.user_id' } );

1;


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package Froschpopo::Model::Database::Foto;

use strict;
use warnings;
use base qw(DBIx::Class);

__PACKAGE__->load_components( qw(PK::Auto Core) );
__PACKAGE__->table( 'fotos' );

__PACKAGE__->add_columns( qw(
    foto_id
    user_id
    path
));
__PACKAGE__->set_primary_key( 'foto_id' );

__PACKAGE__->has_many( User => 'Froschpopo::Model:Database::User',
                      { 'foreign.user_id' => 'self.user_id' } );

1;


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl

use strict;
use warnings;

use CGI;

use Froschpopo::Model::Database;

my $cgi = CGI->new;

my $schema = Froschpopo::Model::Database->connect($alles_wie_bei_dbi);
my ($user) = $schema->resultset( 'User' )->search({
    user_id => $user_id,
});

if( $user ){
    print $user->vorname," ", $user->nachname;
    
    if ($cgi->param('nur_user_mit_bild')) {
        my @fotos = $user->Fotos;
        for my $foto ( @fotos ){
            print "Foto: ", $foto->path,"\n";
        }
    }
}
else{
    print "Kein User gefunden";
}


Durch das "Navigieren" durch die Tabellen brauchst Du gar nicht vorher zu sagen, aus welchen Tabellen Du etwas haben willst.

Die Fo.to-Tabelle wird auch erst abgefragt, wenn der CGI-Parameter gesetzt ist
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/

View full thread DBIx::Class