Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Catalyst: Users

edit has_many relation with FormFu

 

 

Catalyst users RSS feed   Index | Next | Previous | View Threaded


davewood at gmx

Oct 24, 2008, 1:08 AM

Post #1 of 5 (913 views)
Permalink
edit has_many relation with FormFu

Hello List.

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

--
David Schmidt | http://www.fm5.at

_______________________________________________
List: Catalyst [at] lists
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst [at] lists/
Dev site: http://dev.catalyst.perl.org/


hutchinson.chris at gmail

Oct 26, 2008, 2:59 PM

Post #2 of 5 (828 views)
Permalink
Re: edit has_many relation with FormFu [In reply to]

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 [at] lists
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst [at] lists/
Dev site: http://dev.catalyst.perl.org/


davewood at gmx

Oct 27, 2008, 2:23 AM

Post #3 of 5 (832 views)
Permalink
Re: edit has_many relation with FormFu [In reply to]

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.chris [at] gmail> 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 [at] lists
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst [at] lists/
> Dev site: http://dev.catalyst.perl.org/
>



--
David Schmidt | http://www.fm5.at

_______________________________________________
List: Catalyst [at] lists
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst [at] lists/
Dev site: http://dev.catalyst.perl.org/


davewood at gmx

Oct 27, 2008, 3:27 AM

Post #4 of 5 (857 views)
Permalink
Re: edit has_many relation with FormFu [In reply to]

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 <davewood [at] gmx> 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.chris [at] gmail> 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 [at] lists
>> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
>> Searchable archive: http://www.mail-archive.com/catalyst [at] lists/
>> Dev site: http://dev.catalyst.perl.org/
>>
>
>
>
> --
> David Schmidt | http://www.fm5.at
>



--
David Schmidt | http://www.fm5.at

_______________________________________________
List: Catalyst [at] lists
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst [at] lists/
Dev site: http://dev.catalyst.perl.org/


learn.catalyst at gmail

Apr 11, 2012, 7:53 AM

Post #5 of 5 (327 views)
Permalink
Re: edit has_many relation with FormFu [In reply to]

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

Catalyst users RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.