[html-formfu] many_to_many save_to_model & defaults_from_model

Вячеслав Тихановский viacheslav.t at gmail.com
Mon Jan 21 18:36:39 GMT 2008


Hello.

Probably I found a bug.

If I have relationships like this:

Bands (bandid, name)
-> has_many map_band_user
-> many_to_many genres

Genres (genreid, name)
-> has_many map_band_user
-> many_to_many bands

BandGenre(bandid, genreid)
-> belongs to band
-> belongs to genre

To check genres I use the following config:

  - type: Select
    name: genres
    label: Genres
    multiple: 1
    db:
      default_column: genreid

Of course then defaults_from_model fires up with:

DBI Exception: DBD::mysql::st execute failed: Column 'genreid' in
field list is ambiguous [for Statement "SELECT genreid FROM
bands_band_genre me JOIN bands_genres genre ON ( genre.genreid =
me.genreid ) WHERE ( me.bandid = ? )" with ParamValues: 0='1'] at
/usr/lib/perl5/vendor_perl/5.8.8/DBIx/Class/Schema.pm line 945

If I change default_column to me.genreid (which as I guess is a
solution) it fires up on save_to_model with:

DBI Exception: DBD::mysql::st execute failed: Unknown column
'me.me.genreid' in 'where clause' [for Statement "SELECT me.genreid,
me.name FROM bands_genres me WHERE ( me.me.genreid IN ( ? ) )" with
ParamValues: 0='2'] at
/usr/lib/perl5/vendor_perl/5.8.8/DBIx/Class/Schema.pm line 945

The dirty hack I am using now is like this:

Index: lib/HTML/FormFu/Model/DBIC.pm
===================================================================
--- lib/HTML/FormFu/Model/DBIC.pm       (revision 792)
+++ lib/HTML/FormFu/Model/DBIC.pm       (working copy)
@@ -546,8 +546,10 @@
                 ? $field->db->{default_column}
                 : $dbic->$name->result_source->primary_columns;

+            $pk = "me.$pk" unless $pk =~ m/^me\./;
+
             my @rows = $dbic->$name->result_source->resultset->search(
-                { "me.$pk" => { -in => \@values } } )->all;
+                { $pk => { -in => \@values } } )->all;

             my $set_method = "set_$name";



More information about the HTML-FormFu mailing list