Hi did you ever get this resolved? I am trying to get a many_to_many relationship in FormFu to work in Catalyst also with a join table. I am having trouble figuring out the proper YAML to put into the form. I was hoping that you figured out the problem in the end and could share the solution.
On Mon, Oct 27, 2008 at 6:27 AM, David Schmidt <davew...@gmx.at> wrote: > Another mail I got from outside of the Mailinglist strengthened my > theory (composed primary keys are bad for nested_name/Repeatable > Types) > > Upon adding a atomic primary key to the picture_projects table I now > receive the following error when trying to edit a project > > > CREATE TABLE picture_projects ( > > id INTEGER PRIMARY KEY, > > picture_id INTEGER, > > project_id INTEGER, > > position INTEGER, > > UNIQUE (project_id, picture_id), > > FOREIGN KEY (project_id) references projects(id), > > FOREIGN KEY (picture_id) references pictures(id) > > ); > > http://131.130.239.28:3000/projects/formfu_edit/1 > > DBI Exception: DBD::SQLite::db prepare_cached failed: ambiguous column > name: id(1) at dbdimp.c line 271 [for Statement "SELECT id FROM > picture_projects me JOIN pictures picture ON ( picture.id = > me.picture_id ) WHERE ( me.id = ? )"] at > /usr/local/share/perl/5.8.8/DBIx/Class/Schema.pm line 954 > > I could simply avoid this error by not naming the primary key in table > picture_projects "id" (ambiguous with primary key "id" in table > projects) but I sense either a bug in Catalyst/FormFu interaction or > rather likely some misconfiguration on my behalf. > > Is there a way to make catalyst call: > > "SELECT me.id FROM picture_projects me JOIN pictures picture ON ( > picture.id = me.picture_id ) WHERE ( me.id = ? )" > rather then > "SELECT id FROM picture_projects me JOIN pictures picture ON ( > picture.id = me.picture_id ) WHERE ( me.id = ? )" > > ? > > david > > On Mon, Oct 27, 2008 at 10:23 AM, David Schmidt <davew...@gmx.at> wrote: > > Hello and thanks for your reply. > > I tried adding model_config before but it didn't change anything. > > Here is a full formfu_create.yml listing: > > > >> indicator: submit > >> elements: > >> - type: Text > >> name: title > >> label: Title > >> > >> - type: Textarea > >> name: description > >> label: Description > >> > >> - type: Select > >> name: pictures > >> label: Pictures > >> multiple: 1 > >> size: 10 > >> > >> - type: Select > >> name: active > >> label: Status > >> options: > >> - [ '0', 'inactive' ] > >> - [ '1', 'active' ] > >> > >> - type: Repeatable > >> nested_name: picture_projects > >> model_config: > >> model: 'myDB::PictureProjects' > >> elements: > >> - type: Hidden > >> name: project_id > >> - type: Hidden > >> name: picture_id > >> - type: Text > >> label: Position > >> name: position > >> > >> - type: Submit > >> name: submit > >> value: Submit > >> > >> constraints: > >> - Required > > > > The only thing different with your example I can see is that you > > apparently have a primary key consisting of one column while I have a > > composed primary key of the two foreign keys of the m:n relation. > > > > friendly greetings > > david > > > > On Sun, Oct 26, 2008 at 10:59 PM, Chris <hutchinson.ch...@gmail.com> > wrote: > >> Hi David, > >> > >>> I want to edit a m:n relation between projects and pictures (a project > >>> may have many pictures). It is displayed correctly but upon submit the > >>> following error message occurs: > >>> NOTE: 7 is the project ID which seems to be interpreted as a column > name > >>> > >>> DBI Exception: DBD::SQLite::db prepare_cached failed: near ".7": > >>> syntax error(1) at dbdimp.c line 271 [for Statement "SELECT > >>> me.picture_id, me.project_id, me.position FROM picture_projects me > >>> WHERE ( ( ( me.7 IS NULL ) AND ( me.project_id = ? ) ) )"] at > >>> /usr/local/share/perl/5.8.8/DBIx/Class/Schema.pm line 954 > >>> > >>> in this line in Controller/Projects.pm: > >>>>if ($form->submitted_and_valid) { > >>>> $form->model->update($project); > >>> > >>> > >>> Any help is highly appreciated as I am stuck with this problem since a > >>> few days already. > >>> > >>> in lib/MyApp/Schema/Projects.pm: > >>>> __PACKAGE__->has_many(picture_projects => > 'Oberhumer::Schema::PictureProjects', 'project_id'); > >>>> __PACKAGE__->many_to_many(pictures => 'picture_projects', 'picture'); > >>> > >>> in myapp02.sql: > >>>>CREATE TABLE pictures ( > >>>> id INTEGER PRIMARY KEY, > >>>> title TEXT, > >>>> info TEXT, > >>>> filename TEXT, > >>>> created datetime > >>>>); > >>>> > >>>>CREATE TABLE picture_projects ( > >>>> picture_id INTEGER, > >>>> project_id INTEGER, > >>>> position INTEGER, > >>>> PRIMARY KEY (project_id, picture_id) > >>>>); > >>> > >>> in root/forms/projects/formfu_create.yml: > >>>>- type: Repeatable > >>>> nested_name: picture_projects > >>>> elements: > >>>> - type: Hidden > >>>> name: project_id > >>>> - type: Hidden > >>>> name: picture_id > >>>> - type: Text > >>>> label: Position > >>>> name: position > >>> > >>> with friendly greetings > >>> David Schmidt > >>> > >> > >> What does the rest of formfu_create.yml contain? > >> > >> I've seen the same problem. I vaguely recall needing a model_config > >> section in the formfu config, something like this (as a perl hash): > >> > >> { type => 'Fieldset', legend=>'Plant Zones', elements => [ > >> { > >> type => 'Repeatable', > >> nested_name => > 'plant_zones', > >> > >> model_config => { > >> model > => 'DB::PlantZones', > >> new_empty_row_multi > => 'zone_id', > >> }, > >> > >> attributes => { > >> class => > 'zone-block', > >> }, > >> > >> elements => [ > >> { > >> type => > 'Hidden', > >> name => > 'id', > >> }, > >> > >> ... etc... > >> > >> - Chris > >> > >> _______________________________________________ > >> List: Catalyst@lists.scsys.co.uk > >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > >> Searchable archive: > http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > >> Dev site: http://dev.catalyst.perl.org/ > >> > > > > > > > > -- > > David Schmidt | http://www.fm5.at > > > > > > -- > David Schmidt | http://www.fm5.at > > _______________________________________________ > List: Catalyst@lists.scsys.co.uk > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: > http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > Dev site: http://dev.catalyst.perl.org/ >
_______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/