[Catalyst] edit has_many relation with FormFu

Chris hutchinson.chris at gmail.com
Sun Oct 26 21:59:57 GMT 2008


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



More information about the Catalyst mailing list