[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