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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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: [email protected] >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst >> Searchable archive: http://www.mail-archive.com/[email protected]/ >> Dev site: http://dev.catalyst.perl.org/ >> > > > > -- > David Schmidt | http://www.fm5.at > -- David Schmidt | http://www.fm5.at _______________________________________________ List: [email protected] Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[email protected]/ Dev site: http://dev.catalyst.perl.org/
