[html-formfu] "Column 'id' in field list is ambiguous"
Jens Schwarz
blacky6767 at gmx.de
Thu Dec 4 05:13:06 GMT 2008
Hi,
I don't know if the problem I have is the same as in http://lists.scsys.co.uk/pipermail/html-formfu/2008-January/000845.html . pmvers HTML::FormFu tells me that I am running FormFu 0.03005.
I have 3 tables (schemas automatically created by catalyst/dbix - many_to_many relations manually added):
Band.pm:
--------
(...)
__PACKAGE__->table("bands");
__PACKAGE__->add_columns("id",{...},"name",{...});
(...)
__PACKAGE__->has_many("bands_has_genres","My::Schema::BandsHasGenres",{"foreign.bands_id" => "self.id" });
__PACKAGE__->many_to_many(genres => "bands_has_genres", "genres_id");
Genres.pm:
----------
(...)
__PACKAGE__->table("genres");
__PACKAGE__->add_columns("id",{...},"name",{...});
(...)
__PACKAGE__->has_many("bands_has_genres","My::Schema::BandsHasGenres",{"foreign.genres_id" => "self.id" });
__PACKAGE__->many_to_many(bands => "bands_has_genres", "bands_id");
BandsHasGenres.pm
-----------------
(...)
__PACKAGE__->table("bands_has_genres");
__PACKAGE__->add_columns("id",{...},"bands_id",{...},"genres_id",{...});
(...)
__PACKAGE__->belongs_to("bands_id","My::Schema::Bands",{ id => "bands_id" });
__PACKAGE__->belongs_to("genres_id","My::Schema::Genres",{ id => "genres_id" });
In my controller Band.pm:
-------------------------
sub edit :Local :FormConfig {
my ($self, $c, @args) = @_;
my $bands = $c->model('My::Bands')->find($args[0]);
my $form = $c->stash(myform);
if ($form->submitted_and_valid) {
(...)
}
else {
my @mygenres = $bands->genres;
my @genreobj = $c->model('My::Genres')->all();
my @genres;
foreach my $g (@genreobj) {
push(@genres, [$g->id, $g->name]);
}
my $select = $form->get_element({name => 'genres'});
$select->options(\@genres);
my @myg;
foreach my $g (@mygenres) {
push(@myg, $g->id);
}
$select->default(\@myg);
$form->model->default_values($bands);
}
}
edit.yml of Band form:
----------------------
- type: Text
name: name
- type: Select
name: genres
Problem:
--------
If I now want to edit a band, I get this "ambiguous" error message:
DBIx::Class::ResultSetColumn::all(): DBI Exception: DBD::mysql::st execute failed: Column 'id' in field list is ambiguous [for Statement "SELECT id FROM bands_has_genres me JOIN genres genres_id ON ( genres_id.id = me.genres_id ) WHERE ( me.bands_id = ? )" with ParamValues: 0='7'] at /opt/aperl/ActivePerl-5.10/site/lib/HTML/FormFu/Model/DBIC.pm line 200
What am I doing wrong?
--
Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger
More information about the HTML-FormFu
mailing list