[html-formfu] many_to_many populates correctly, but throws exception on update

Vesselin Mirewski v.mirewski at bugsys.org
Thu Aug 23 15:09:13 GMT 2012


Hi, I have troubles with formfu checkboxgroup/DBIx.  I build a very
simple example of standard mapping in Catalyst 5.90016. ( Same problem
I got with earlier versions of all components )

The following example populates all the selected "categroies" ( e.g.
content in the example ) but throws exception when trying to update.
Seems like DBIx doesn't pass the schemaname ( 'page_content_map'
instead of 'web.page_content_map' ) or perhaps is it somehow connected
with perlbrew ... ?

I have build the model with 'qualify_objects=1 db_schema=SCHEMANAME'
and the correct prefix is in all models and resultsets.

Thanks for any help in advance.

Follows the declaration of the 3 tables + yml + DBI exception.

__PACKAGE__->table("web.page");

__PACKAGE__->has_many( "page_content_maps",
"Web::Schema::Result::PageContentMap",
              { "foreign.page_id" => "self.id" },
              { cascade_copy => 0, cascade_delete => 0 },
);

 __PACKAGE__->many_to_many( 'content' => 'page_content_maps', 'content' );

 __PACKAGE__->table("web.content");

__PACKAGE__->has_many( "page_content_maps",
"Web::Schema::Result::PageContentMap",
             { "foreign.content_id" => "self.id" },
             { cascade_copy => 0, cascade_delete => 0 },

);

 __PACKAGE__->many_to_many( 'page' => "page_content_maps", 'page' );

__PACKAGE__->table("web.page_content_map");

__PACKAGE__->belongs_to( "content", "Web::Schema::Result::Content",
            { id => "content_id" },
            { is_deferrable => 1, on_delete => "CASCADE", on_update =>
"CASCADE" },
);

 __PACKAGE__->belongs_to( "page", "Web::Schema::Result::Page",
            { id => "page_id" },
            { is_deferrable => 1, on_delete => "CASCADE", on_update =>
"CASCADE" },
);

edit.yml given an existing entry of model Web::Page as default :
...............
                - type: Checkboxgroup
                  name: content
                  label: Content
                  model_config:
                       model: 'Web::Content'
............

DBI Exception: DBD::Pg::st execute failed: ERROR: relation
"page_content_map" does not exist LINE 1: DELETE FROM
"page_content_map" WHERE ( "page_id" = $1 ) ^ [for Statement "DELETE
FROM "page_content_map" WHERE ( "page_id" = ? )" with ParamValues:
1='2'] at /home/bugsy/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/DBIx/Class/Schema.pm
line 1101.



More information about the HTML-FormFu mailing list