Thread DBIx::Class - Weitere Spalten in Relationstabellen (3 answers)
Opened by Cremator at 2009-01-16 11:07

Cremator
 2009-01-16 11:07
#118061 #118061
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Moin!

Ich versuche mich grade ein erstes mal an DBIx::Class bzw. Catalyst und bin dabei auf ein Problem gestossen das in keiner Doku die mir bisher untergekommen ist behandelt wird. Wie komme ich an Daten ran die zusätzlich zu den IDs in Relationstabellen abgespeichert sind, bzw. wie bekomme ich diese erstmal in die DB?

Folgende Tabellen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
groesse:
id INT auto_increment PK
name char

ding:
id INT auto_increment PK
name char

map:
id_ding INT # FK aus Tab ding
id_groesse INT # FK aus Tab groesse
preis FLOAT

Größen sind bereits vorhanden bevor Dinge gespeichert werden können. Wenn jetzt ein neues Ding erzeugt wird, soll es möglich sein für die verschiedenen Größen unterschiedliche Preise einzugeben. Das Formular hab ich schon, in der Relationstabelle wird auch ein neuer Eintrag erzeugt, aber die zusätzliche Spalte enthält keine Daten. Code in Catalyst von dem ich dachte das er gehen würde (wenn ich mich in der Doku zu Resultset nicht verlesen habe):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $ding = $c->model('Db::Ding')->create({
    name       => $form->param('name'),
    groesse    => [
        { id_groesse => $form->param('id_groesse_1'), preis => $form->param('preis_groesse_1') },
        { id_groesse => $form->param('id_groesse_2'), preis => $form->param('preis_groesse_2') },
        # etc für die weiteren größen
    ],
});
$ding->update();

Oder ist sowas in DBIx grundsätzlich nicht vorgesehen? Das wäre ja ganz schön mistig :(

View full thread DBIx::Class - Weitere Spalten in Relationstabellen